* [alternative-merged] ioprio-rcu_read_lock-unlock-protect-find_task_by_vpid-call-v2.patch removed from -mm tree
@ 2010-11-25 16:16 akpm
0 siblings, 0 replies; only message in thread
From: akpm @ 2010-11-25 16:16 UTC (permalink / raw)
To: sergey.senozhatsky, axboe, paulmck, mm-commits
The patch titled
ioprio: rcu_read_lock/unlock protect find_task_by_vpid call (V2)
has been removed from the -mm tree. Its filename was
ioprio-rcu_read_lock-unlock-protect-find_task_by_vpid-call-v2.patch
This patch was dropped because an alternative patch was merged
The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/
------------------------------------------------------
Subject: ioprio: rcu_read_lock/unlock protect find_task_by_vpid call (V2)
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Commit 4221a9918e38b7494cee341dda7b7b4bb8c04bde ("Add RCU check for
find_task_by_vpid()") introduced rcu_lockdep_assert to
find_task_by_pid_ns. Assertion failed in sys_ioprio_get. The patch is
fixing assertion failure in ioprio_set as well.
kernel/pid.c:419 invoked rcu_dereference_check() without protection!
stack backtrace:
Pid: 4254, comm: iotop Not tainted
Call Trace:
[<ffffffff810656f2>] lockdep_rcu_dereference+0xaa/0xb2
[<ffffffff81053c67>] find_task_by_pid_ns+0x4f/0x68
[<ffffffff81053c9d>] find_task_by_vpid+0x1d/0x1f
[<ffffffff811104e2>] sys_ioprio_get+0x50/0x2da
[<ffffffff81002182>] system_call_fastpath+0x16/0x1b
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
fs/ioprio.c | 4 ++++
1 file changed, 4 insertions(+)
diff -puN fs/ioprio.c~ioprio-rcu_read_lock-unlock-protect-find_task_by_vpid-call-v2 fs/ioprio.c
--- a/fs/ioprio.c~ioprio-rcu_read_lock-unlock-protect-find_task_by_vpid-call-v2
+++ a/fs/ioprio.c
@@ -106,12 +106,14 @@ SYSCALL_DEFINE3(ioprio_set, int, which,
rcu_read_lock();
switch (which) {
case IOPRIO_WHO_PROCESS:
+ rcu_read_lock();
if (!who)
p = current;
else
p = find_task_by_vpid(who);
if (p)
ret = set_task_ioprio(p, ioprio);
+ rcu_read_unlock();
break;
case IOPRIO_WHO_PGRP:
if (!who)
@@ -195,12 +197,14 @@ SYSCALL_DEFINE2(ioprio_get, int, which,
rcu_read_lock();
switch (which) {
case IOPRIO_WHO_PROCESS:
+ rcu_read_lock();
if (!who)
p = current;
else
p = find_task_by_vpid(who);
if (p)
ret = get_task_ioprio(p);
+ rcu_read_unlock();
break;
case IOPRIO_WHO_PGRP:
if (!who)
_
Patches currently in -mm which might be from sergey.senozhatsky@gmail.com are
linux-next.patch
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2010-11-25 16:21 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-25 16:16 [alternative-merged] ioprio-rcu_read_lock-unlock-protect-find_task_by_vpid-call-v2.patch removed from -mm tree akpm
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).