]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - security/selinux/hooks.c
rlimits: selinux, do rlimits changes under task_lock
[mv-sheeva.git] / security / selinux / hooks.c
index e3ce6b4127cc8f9f0a55cd9612e4cfec45dba0a8..2a8a0a915ff38b49bcf98ad36f249b0cef7f5d00 100644 (file)
@@ -2333,12 +2333,15 @@ static void selinux_bprm_committing_creds(struct linux_binprm *bprm)
        rc = avc_has_perm(new_tsec->osid, new_tsec->sid, SECCLASS_PROCESS,
                          PROCESS__RLIMITINH, NULL);
        if (rc) {
+               /* protect against do_prlimit() */
+               task_lock(current);
                for (i = 0; i < RLIM_NLIMITS; i++) {
                        rlim = current->signal->rlim + i;
                        initrlim = init_task.signal->rlim + i;
                        rlim->rlim_cur = min(rlim->rlim_max, initrlim->rlim_cur);
                }
-               update_rlimit_cpu(current->signal->rlim[RLIMIT_CPU].rlim_cur);
+               task_unlock(current);
+               update_rlimit_cpu(current, rlimit(RLIMIT_CPU));
        }
 }