We have added new functionality to mremap() in Linux 6.17, permitting the move of multiple VMAs when performing a move alone (that is - providing MREMAP_MAYMOVE | MREMAP_FIXED flags and specifying old_size == new_size). We document this new feature. Additionally, we document previously undocumented behaviour around shrinking of input VMA ranges which permits the input range to span multiple VMAs. v5: * Reword point about 'old_address' needing to be in a mapped range more clearly as per Alejandro. * Update wording accordingly around this, e.g. referencing unmapped areas between mappings to be consistent. * Minor wording fixup stating that the MREMAP_DONTUNMAP flag may _also_ be specified. * Separated out adding a section on 'pure' moves and describing the new behaviour, as per Alejandro. * Update the commit message of 2/3 to reflect the above. * Removed erroneously introduced blank line in 2/3 as per Alejandro. v4: * Update description of newly discovered mremap() behaviour to highlight the fact that, if in-place, [old_address, old_address + new_length) may span multiple VMAs also. * Fix up commit message for 2/2 to correct typo on specified range. * Added code sample to 1/2 as per Alejandro. https://lore.kernel.org/all/cover.1754414738.git.lorenzo.stoakes@xxxxxxxxxx/ v3: * Use more precise language around mremap() move description as per Jann. * Fix some typos in commit messages. https://lore.kernel.org/all/cover.1753795807.git.lorenzo.stoakes@xxxxxxxxxx/ v2: * Split out the two man page changes as requested by Alejandro. https://lore.kernel.org/all/cover.1753711160.git.lorenzo.stoakes@xxxxxxxxxx/ v1: https://lore.kernel.org/all/20250723174634.75054-1-lorenzo.stoakes@xxxxxxxxxx/ Lorenzo Stoakes (3): man/man2/mremap.2: explicitly document the simple move operation man/man2/mremap.2: describe multiple mapping move man/man2/mremap.2: describe previously undocumented shrink behaviour man/man2/mremap.2 | 109 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 98 insertions(+), 11 deletions(-) -- 2.50.1