mm/madvise: process_madvise() drop capability check if same mm
authorLorenzo Stoakes <lorenzo.stoakes@oracle.com>
Fri, 13 Sep 2024 14:06:28 +0000 (15:06 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 17 Sep 2024 07:58:05 +0000 (00:58 -0700)
commit22af8caff7d1ca22a1ff1a554180e53f7a6555af
tree99b08184bbb3ad6d372df0d430b45475e3ebd760
parent2a1b8648d9be9f37f808a36c0f74adb8c53d06e6
mm/madvise: process_madvise() drop capability check if same mm

In commit 96cfe2c0fd23 ("mm/madvise: replace ptrace attach requirement for
process_madvise") process_madvise() was updated to require the caller to
possess the CAP_SYS_NICE capability to perform the operation, in addition
to a check against PTRACE_MODE_READ performed by mm_access().

The mm_access() function explicitly checks to see if the address space of
the process being referenced is the current one, in which case no check is
performed.

We, however, do not do this when checking the CAP_SYS_NICE capability. This
means that we insist on the caller possessing this capability in order to
perform madvise() operations on its own address space, which seems
nonsensical.

Simply add a check to allow for an invocation of this function with pidfd
set to the current process without elevation.

Link: https://lkml.kernel.org/r/20240913140628.77047-1-lorenzo.stoakes@oracle.com
Fixes: 96cfe2c0fd23 ("mm/madvise: replace ptrace attach requirement for process_madvise")
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: Shakeel Butt <shakeel.butt@linux.dev>
Acked-by: David Rientjes <rientjes@google.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/madvise.c