From b705c4e71705000925ac55d31d037a661c7b736d Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Tue, 29 Aug 2006 09:17:41 +0200 Subject: [PATCH] --- yaml --- r: 37567 b: refs/heads/master c: cf342e52e3117391868fb4bd900ce772a27a5a1a h: refs/heads/master i: 37565: 5f5ffe44c2ed025fb37faa17bb22d2691cae8597 37563: 639e90f0f0ceeaa33dd6994ef483571fdcdf29ad 37559: 191802b83d94b97be0231e504db719f797698e0e 37551: 9f03c4fd1b0fe1f05801651b27342747e93fdbba 37535: 9e8cbfdeaf2bf96bcadcd6a1736ab693b4fc0abd 37503: 7ec9a829b73c136bfb2004cd0dad8c4d3033403e v: v3 --- [refs] | 2 +- trunk/fs/ioprio.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 230632b7669e..31ca7b3370fd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 25034d7a83cf77667f3d65822484b305d4be6b25 +refs/heads/master: cf342e52e3117391868fb4bd900ce772a27a5a1a diff --git a/trunk/fs/ioprio.c b/trunk/fs/ioprio.c index 0fd1089d7bf6..03dc4f269b76 100644 --- a/trunk/fs/ioprio.c +++ b/trunk/fs/ioprio.c @@ -81,7 +81,12 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio) } 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) { case IOPRIO_WHO_PROCESS: if (!who) @@ -124,7 +129,7 @@ asmlinkage long sys_ioprio_set(int which, int who, int ioprio) ret = -EINVAL; } - read_unlock_irq(&tasklist_lock); + read_unlock(&tasklist_lock); return ret; } @@ -170,7 +175,7 @@ asmlinkage long sys_ioprio_get(int which, int who) int ret = -ESRCH; int tmpio; - read_lock_irq(&tasklist_lock); + read_lock(&tasklist_lock); switch (which) { case IOPRIO_WHO_PROCESS: if (!who) @@ -221,7 +226,7 @@ asmlinkage long sys_ioprio_get(int which, int who) ret = -EINVAL; } - read_unlock_irq(&tasklist_lock); + read_unlock(&tasklist_lock); return ret; }