prctl: use CAP_SYS_RESOURCE for PR_SET_MM option
Cyrill Gorcunov [Thu, 15 Mar 2012 22:17:10 +0000 (15:17 -0700)]
CAP_SYS_ADMIN is already overloaded left and right, so to have more
fine-grained access control use CAP_SYS_RESOURCE here.

The CAP_SYS_RESOUCE is chosen because this prctl option allows a current
process to adjust some fields of memory map descriptor which rather
represents what the process owns: pointers to code, data, stack
segments, command line, auxiliary vector data and etc.

Suggested-by: Michael Kerrisk <>
Acked-by: Kees Cook <>
Acked-by: Michael Kerrisk <>
Cc: Pavel Emelyanov <>
Cc: Tejun Heo <>
Cc: Oleg Nesterov <>
Cc: Paul Bolle <>
Cc: KOSAKI Motohiro <>
Signed-off-by: Cyrill Gorcunov <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>


index 4070153..888d227 100644 (file)
@@ -1706,7 +1706,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
        if (arg4 | arg5)
                return -EINVAL;
-       if (!capable(CAP_SYS_ADMIN))
+       if (!capable(CAP_SYS_RESOURCE))
                return -EPERM;
        if (addr >= TASK_SIZE)