Re: [patch] mremap.2: Add description of old_size == 0 functionality

From: Florian Weimer
Date: Mon Sep 18 2017 - 09:45:46 EST


On 09/15/2017 11:53 PM, Mike Kravetz wrote:
+If the value of \fIold_size\fP is zero, and \fIold_address\fP refers to
+a private anonymous mapping, then
+.BR mremap ()
+will create a new mapping of the same pages. \fInew_size\fP
+will be the size of the new mapping and the location of the new mapping
+may be specified with \fInew_address\fP, see the description of
+.B MREMAP_FIXED
+below. If a new mapping is requested via this method, then the
+.B MREMAP_MAYMOVE
+flag must also be specified. This functionality is deprecated, and no
+new code should be written to use this feature. A better method of
+obtaining multiple mappings of the same private anonymous memory is via the
+.BR memfd_create()
+system call.

Is there any particular reason to deprecate this?

In glibc, we cannot use memfd_create and keep the file descriptor around because the application can close descriptors beneath us.

(We might want to use alias mappings to avoid run-time code generation for PLT-less LD_AUDIT interceptors.)

Thanks,
Florian