• Amnon Shiloh's avatar
    kernel/sys.c: make prctl(PR_SET_MM) generally available · 52b36941
    Amnon Shiloh authored
    The purpose of this patch is to allow privileged processes to set
    their own per-memory memory-region fields:
    
          start_code, end_code, start_data, end_data, start_brk, brk,
          start_stack, arg_start, arg_end, env_start, env_end.
    
    This functionality is needed by any application or package that needs to
    reconstruct Linux processes, that is, to start them in any way other than
    by means of an "execve()" from an executable file.  This includes:
    
    1. Restoring processes from a checkpoint-file (by all potential
       user-level checkpointing packages, not only CRIU's).
    2. Restarting processes on another node after process migration.
    3. Starting duplicated copies of a running process (for reliability
       and high-availablity).
    4. Starting a process from an executable format that is not supported
       by Linux, thus requiring a "manual execve" by a user-level utility.
    5. Similarly, starting a process from a networked and/or crypted
       executable that, for confidentiality, licensing or other reasons,
       may not be written to the local file-systems.
    
    The code that does that was already included in the Linux kernel by the
    CRIU group, in the form of "prctl(PR_SET_MM)", but prior to this was
    enclosed within their private "#ifdef CONFIG_CHECKPOINT_RESTORE", which is
    normally disabled.  The patch removes those ifdefs.
    Signed-off-by: default avatarAmnon Shiloh <u3557@miso.sublimeip.com>
    Cc: Cyrill Gorcunov <gorcunov@openvz.org>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    52b36941
sys.c 56.9 KB