OSDN Git Service

perf/core: Fix mlock accounting in perf_mmap()
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / kernel / events / core.c
index a7014f8..203384a 100644 (file)
@@ -4887,7 +4887,15 @@ accounting:
         */
        user_lock_limit *= num_online_cpus();
 
-       user_locked = atomic_long_read(&user->locked_vm) + user_extra;
+       user_locked = atomic_long_read(&user->locked_vm);
+
+       /*
+        * sysctl_perf_event_mlock may have changed, so that
+        *     user->locked_vm > user_lock_limit
+        */
+       if (user_locked > user_lock_limit)
+               user_locked = user_lock_limit;
+       user_locked += user_extra;
 
        if (user_locked > user_lock_limit)
                extra = user_locked - user_lock_limit;