diff mbox series

[3/4] mm: vrealloc: properly document __GFP_ZERO behavior

Message ID 20240730185049.6244-4-dakr@kernel.org (mailing list archive)
State New
Headers show
Series (k)vrealloc (__GFP_ZERO) fixes | expand

Commit Message

Danilo Krummrich July 30, 2024, 6:49 p.m. UTC
Properly document that if __GFP_ZERO logic is requested, callers must
ensure that, starting with the initial memory allocation, every
subsequent call to this API for the same memory allocation is flagged
with __GFP_ZERO. Otherwise, it is possible that __GFP_ZERO is not fully
honored by this API.

Signed-off-by: Danilo Krummrich <dakr@kernel.org>
---
 mm/vmalloc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Comments

Andrew Morton July 30, 2024, 9:19 p.m. UTC | #1
On Tue, 30 Jul 2024 20:49:43 +0200 Danilo Krummrich <dakr@kernel.org> wrote:

> Properly document that if __GFP_ZERO logic is requested, callers must
> ensure that, starting with the initial memory allocation, every
> subsequent call to this API for the same memory allocation is flagged
> with __GFP_ZERO. Otherwise, it is possible that __GFP_ZERO is not fully
> honored by this API.

I appear to have just seen this, in a separate mailing.

Please, slow down.  We have two months.  Await reviewer feedback, spend
time over those changelogs, value clarity and accuracy and completeness
over hastiness.  The only reason for rushing things is if a patch is
disrupting ongoing testing of the linux-next tree.
Danilo Krummrich July 30, 2024, 10:43 p.m. UTC | #2
On Tue, Jul 30, 2024 at 02:19:53PM -0700, Andrew Morton wrote:
> On Tue, 30 Jul 2024 20:49:43 +0200 Danilo Krummrich <dakr@kernel.org> wrote:
> 
> > Properly document that if __GFP_ZERO logic is requested, callers must
> > ensure that, starting with the initial memory allocation, every
> > subsequent call to this API for the same memory allocation is flagged
> > with __GFP_ZERO. Otherwise, it is possible that __GFP_ZERO is not fully
> > honored by this API.
> 
> I appear to have just seen this, in a separate mailing.

What you have seen in a separate mail is a similar patch for krealloc() [1].
This one is a fixup for vrealloc() from a previous submission you've applied to
mm-unstable.

> 
> Please, slow down.  We have two months.  Await reviewer feedback, spend
> time over those changelogs, value clarity and accuracy and completeness
> over hastiness.  The only reason for rushing things is if a patch is
> disrupting ongoing testing of the linux-next tree.

There was a discussion in [2], which lead to this fixup series.

In terms of changelogs this series is indeed a bit "lax", since I have
recognized that you queue up fixup patches for changes that did already land in
mm-unstable to be squashed into the original commits later on.

[1] https://lore.kernel.org/linux-mm/20240730194214.31483-1-dakr@kernel.org/
[2] https://lore.kernel.org/linux-mm/20240722163111.4766-1-dakr@kernel.org/T/#m065a7f875b44dc945dd535c2b7168c3d77a98993
Vlastimil Babka July 31, 2024, 2:43 p.m. UTC | #3
On 7/31/24 12:43 AM, Danilo Krummrich wrote:
> On Tue, Jul 30, 2024 at 02:19:53PM -0700, Andrew Morton wrote:
>> On Tue, 30 Jul 2024 20:49:43 +0200 Danilo Krummrich <dakr@kernel.org> wrote:
>> 
>> > Properly document that if __GFP_ZERO logic is requested, callers must
>> > ensure that, starting with the initial memory allocation, every
>> > subsequent call to this API for the same memory allocation is flagged
>> > with __GFP_ZERO. Otherwise, it is possible that __GFP_ZERO is not fully
>> > honored by this API.
>> 
>> I appear to have just seen this, in a separate mailing.
> 
> What you have seen in a separate mail is a similar patch for krealloc() [1].
> This one is a fixup for vrealloc() from a previous submission you've applied to
> mm-unstable.
> 
>> 
>> Please, slow down.  We have two months.  Await reviewer feedback, spend
>> time over those changelogs, value clarity and accuracy and completeness
>> over hastiness.  The only reason for rushing things is if a patch is
>> disrupting ongoing testing of the linux-next tree.
> 
> There was a discussion in [2], which lead to this fixup series.
> 
> In terms of changelogs this series is indeed a bit "lax", since I have
> recognized that you queue up fixup patches for changes that did already land in
> mm-unstable to be squashed into the original commits later on.

Some of the changes in the fixups would however ideally result in udpdates
to the original changelogs in addition to squashing code. Also with 4 fixups
to 2 original patches it might be IMHO better to squash on your side and
resend as a full replacement. Perhaps also together with the other 2 patches
about __GFP_ZERO for krealloc in a single series. As Andrew mentioned we are
early in the rc phase to afford this.

> [1] https://lore.kernel.org/linux-mm/20240730194214.31483-1-dakr@kernel.org/
> [2] https://lore.kernel.org/linux-mm/20240722163111.4766-1-dakr@kernel.org/T/#m065a7f875b44dc945dd535c2b7168c3d77a98993
Danilo Krummrich July 31, 2024, 3:10 p.m. UTC | #4
On Wed, Jul 31, 2024 at 04:43:39PM +0200, Vlastimil Babka wrote:
> On 7/31/24 12:43 AM, Danilo Krummrich wrote:
> > On Tue, Jul 30, 2024 at 02:19:53PM -0700, Andrew Morton wrote:
> >> On Tue, 30 Jul 2024 20:49:43 +0200 Danilo Krummrich <dakr@kernel.org> wrote:
> >> 
> >> > Properly document that if __GFP_ZERO logic is requested, callers must
> >> > ensure that, starting with the initial memory allocation, every
> >> > subsequent call to this API for the same memory allocation is flagged
> >> > with __GFP_ZERO. Otherwise, it is possible that __GFP_ZERO is not fully
> >> > honored by this API.
> >> 
> >> I appear to have just seen this, in a separate mailing.
> > 
> > What you have seen in a separate mail is a similar patch for krealloc() [1].
> > This one is a fixup for vrealloc() from a previous submission you've applied to
> > mm-unstable.
> > 
> >> 
> >> Please, slow down.  We have two months.  Await reviewer feedback, spend
> >> time over those changelogs, value clarity and accuracy and completeness
> >> over hastiness.  The only reason for rushing things is if a patch is
> >> disrupting ongoing testing of the linux-next tree.
> > 
> > There was a discussion in [2], which lead to this fixup series.
> > 
> > In terms of changelogs this series is indeed a bit "lax", since I have
> > recognized that you queue up fixup patches for changes that did already land in
> > mm-unstable to be squashed into the original commits later on.
> 
> Some of the changes in the fixups would however ideally result in udpdates
> to the original changelogs in addition to squashing code. Also with 4 fixups
> to 2 original patches it might be IMHO better to squash on your side and
> resend as a full replacement. Perhaps also together with the other 2 patches
> about __GFP_ZERO for krealloc in a single series. As Andrew mentioned we are
> early in the rc phase to afford this.

(JFYI, Andrew applied the fixups meanwhile.)

I also don't think that they lead to updates of the commit messages.

But yes, we can proceed with:

(1) leave [1] as it is (with the fixups applied to mm-unstable already) and send
    v2 of [2]
(2) send a v3 for [1] that also includes [2]
(3) send a v3 of [1] and a separate v2 for [2]

Just let me know what you prefer. I'm fine with either of those. :)

[1] https://lore.kernel.org/linux-mm/20240722163111.4766-1-dakr@kernel.org/
[2] https://lore.kernel.org/linux-mm/20240730194214.31483-1-dakr@kernel.org/
diff mbox series

Patch

diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 6a2fef6378e4..48cc10dd06c0 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -4043,12 +4043,17 @@  EXPORT_SYMBOL(vzalloc_node_noprof);
  * @size: the size to reallocate
  * @flags: the flags for the page level allocator
  *
- * The contents of the object pointed to are preserved up to the lesser of the
- * new and old size (__GFP_ZERO flag is effectively ignored).
- *
  * If @p is %NULL, vrealloc() behaves exactly like vmalloc(). If @size is 0 and
  * @p is not a %NULL pointer, the object pointed to is freed.
  *
+ * If __GFP_ZERO logic is requested, callers must ensure that, starting with the
+ * initial memory allocation, every subsequent call to this API for the same
+ * memory allocation is flagged with __GFP_ZERO. Otherwise, it is possible that
+ * __GFP_ZERO is not fully honored by this API.
+ *
+ * In any case, the contents of the object pointed to are preserved up to the
+ * lesser of the new and old sizes.
+ *
  * This function must not be called concurrently with itself or vfree() for the
  * same memory allocation.
  *