Hi Lorenzo, On Mon, Aug 11, 2025 at 03:59:39PM +0100, Lorenzo Stoakes wrote: > There is pre-existing logic that appears to be undocumented for an mremap() > shrink operation, where it turns out that the usual 'input range must span > a single mapping' requirement no longer applies. > > In fact, it turns out that the input range specified by [old_address, > old_address + old_size) may span any number of mappings. > > If shrinking in-place (that is, neither the MREMAP_FIXED nor > MREMAP_DONTUNMAP flags are specified), then the new span may also span any > number of VMAs - [old_address, old_address + new_size). > > If shrinking and moving, the range specified by [old_address, old_address + > new_size) must span a single VMA. > > There must be at least one VMA contained within the [old_address, > old_address + old_size) range, and old_address must be within the range of > a VMA. > > Explicitly document this. > > Signed-off-by: Lorenzo Stoakes > --- > man/man2/mremap.2 | 31 +++++++++++++++++++++++++++++-- > 1 file changed, 29 insertions(+), 2 deletions(-) > > diff --git a/man/man2/mremap.2 b/man/man2/mremap.2 > index 6d14bf627..53d4eda29 100644 > --- a/man/man2/mremap.2 > +++ b/man/man2/mremap.2 > @@ -47,8 +47,35 @@ The > .B MREMAP_DONTUNMAP > flag may also be specified. > .P > -If the operation is not > -simply moving mappings, > +Equally, if the operation performs a shrink, > +that is if Missing comma. > +.I old_size > +is greater than > +.IR new_size , > +then > +.I old_size > +may also span multiple mappings > +which do not have to be > +adjacent to one another. I'm wondering if there's a missing comma or not before 'which'. The meaning of the sentence would be different. So, I should ask: Does old_size > new_size mean that old_size may span multiple mappings and you're commenting that multiple mappings need not be adjacent? Or are multiple mappings always allowed and old_size > new_size allows non-adjacent ones? I suspect it's the former, right? Then, it's missing a comma, right? Other than this, the patch looks good. Have a lovely night! Alex > +If this shrink is performed > +in-place, > +that is, > +neither > +.BR MREMAP_FIXED , > +nor > +.B MREMAP_DONTUNMAP > +are specified, > +.I new_size > +may also span multiple VMAs. > +However, if the range is moved, > +then > +.I new_size > +must span only a single mapping. > +.P > +If the operation is neither a > +.B MREMAP_FIXED > +move > +nor a shrink, > then > .I old_size > must span only a single mapping. > -- > 2.50.1 > --