diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-12-25 16:17:48 +0300 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-12-25 16:17:48 +0300 |
commit | 15e7f8b92aed71819411025279cd3df37f8c636b (patch) | |
tree | 6bc90fd9fcdd4e58321e3f881b2fbcb108a6a654 /kernel/sys.c | |
parent | 21949f00a022e090a7e8bc9a01dfca88273c6146 (diff) | |
parent | ef18beded8ddbaafdf4914bab209f77e60ae3a18 (diff) | |
download | linux-15e7f8b92aed71819411025279cd3df37f8c636b.tar.xz |
Merge branch 'fix/hda' into topic/hda
Diffstat (limited to 'kernel/sys.c')
-rw-r--r-- | kernel/sys.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 585d6cd10040..26a6b73a6b85 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -162,6 +162,7 @@ SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval) if (niceval > 19) niceval = 19; + rcu_read_lock(); read_lock(&tasklist_lock); switch (which) { case PRIO_PROCESS: @@ -189,16 +190,17 @@ SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval) !(user = find_user(who))) goto out_unlock; /* No processes for this user */ - do_each_thread(g, p) + do_each_thread(g, p) { if (__task_cred(p)->uid == who) error = set_one_prio(p, niceval, error); - while_each_thread(g, p); + } while_each_thread(g, p); if (who != cred->uid) free_uid(user); /* For find_user() */ break; } out_unlock: read_unlock(&tasklist_lock); + rcu_read_unlock(); out: return error; } @@ -252,13 +254,13 @@ SYSCALL_DEFINE2(getpriority, int, which, int, who) !(user = find_user(who))) goto out_unlock; /* No processes for this user */ - do_each_thread(g, p) + do_each_thread(g, p) { if (__task_cred(p)->uid == who) { niceval = 20 - task_nice(p); if (niceval > retval) retval = niceval; } - while_each_thread(g, p); + } while_each_thread(g, p); if (who != cred->uid) free_uid(user); /* for find_user() */ break; |