[PATCH] Don't need to disable interrupts for tasklist_lock

Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Oleg Nesterov 2006-08-29 09:17:41 +02:00 committed by Jens Axboe
parent 25034d7a83
commit cf342e52e3
1 changed files with 9 additions and 4 deletions

View File

@ -81,7 +81,12 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio)
} }
ret = -ESRCH; ret = -ESRCH;
read_lock_irq(&tasklist_lock); /*
* We want IOPRIO_WHO_PGRP/IOPRIO_WHO_USER to be "atomic",
* so we can't use rcu_read_lock(). See re-copy of ->ioprio
* in copy_process().
*/
read_lock(&tasklist_lock);
switch (which) { switch (which) {
case IOPRIO_WHO_PROCESS: case IOPRIO_WHO_PROCESS:
if (!who) if (!who)
@ -124,7 +129,7 @@ free_uid:
ret = -EINVAL; ret = -EINVAL;
} }
read_unlock_irq(&tasklist_lock); read_unlock(&tasklist_lock);
return ret; return ret;
} }
@ -170,7 +175,7 @@ asmlinkage long sys_ioprio_get(int which, int who)
int ret = -ESRCH; int ret = -ESRCH;
int tmpio; int tmpio;
read_lock_irq(&tasklist_lock); read_lock(&tasklist_lock);
switch (which) { switch (which) {
case IOPRIO_WHO_PROCESS: case IOPRIO_WHO_PROCESS:
if (!who) if (!who)
@ -221,7 +226,7 @@ asmlinkage long sys_ioprio_get(int which, int who)
ret = -EINVAL; ret = -EINVAL;
} }
read_unlock_irq(&tasklist_lock); read_unlock(&tasklist_lock);
return ret; return ret;
} }