perf/core: Call LSM hook after copying perf_event_attr
authorNamhyung Kim <namhyung@kernel.org>
Tue, 20 Dec 2022 22:31:40 +0000 (14:31 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jan 2023 10:11:46 +0000 (11:11 +0100)
commit 0a041ebca4956292cadfb14a63ace3a9c1dcb0a3 upstream.

It passes the attr struct to the security_perf_event_open() but it's
not initialized yet.

Fixes: da97e18458fb ("perf_event: Add support for LSM and SELinux checks")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20221220223140.4020470-1-namhyung@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/events/core.c

index 732b392..3b9e861 100644 (file)
@@ -12231,12 +12231,12 @@ SYSCALL_DEFINE5(perf_event_open,
        if (flags & ~PERF_FLAG_ALL)
                return -EINVAL;
 
-       /* Do we allow access to perf_event_open(2) ? */
-       err = security_perf_event_open(&attr, PERF_SECURITY_OPEN);
+       err = perf_copy_attr(attr_uptr, &attr);
        if (err)
                return err;
 
-       err = perf_copy_attr(attr_uptr, &attr);
+       /* Do we allow access to perf_event_open(2) ? */
+       err = security_perf_event_open(&attr, PERF_SECURITY_OPEN);
        if (err)
                return err;