diff options
author | Tejun Heo <tj@kernel.org> | 2012-03-05 16:15:25 -0500 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2012-03-06 15:27:24 -0500 |
commit | 3d48749d93a3dce732dd30a14002ab90ec4355f3 (patch) | |
tree | 50ce414ec87e590493476cf644092439c5f337fd /kernel/fork.c | |
parent | 24acfc34fba0b4f62ef9d5c2616eb0faa802b606 (diff) |
block: ioc_task_link() can't fail
ioc_task_link() is used to share %current's ioc on clone. If
%current->io_context is set, %current is guaranteed to have refcount
on the ioc and, thus, ioc_task_link() can't fail.
Replace error checking in ioc_task_link() with WARN_ON_ONCE() and make
it just increment refcount and nr_tasks.
-v2: Description typo fix (Vivek).
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index b77fd559c78e..a1b632713e43 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -901,9 +901,8 @@ static int copy_io(unsigned long clone_flags, struct task_struct *tsk) | |||
901 | * Share io context with parent, if CLONE_IO is set | 901 | * Share io context with parent, if CLONE_IO is set |
902 | */ | 902 | */ |
903 | if (clone_flags & CLONE_IO) { | 903 | if (clone_flags & CLONE_IO) { |
904 | tsk->io_context = ioc_task_link(ioc); | 904 | ioc_task_link(ioc); |
905 | if (unlikely(!tsk->io_context)) | 905 | tsk->io_context = ioc; |
906 | return -ENOMEM; | ||
907 | } else if (ioprio_valid(ioc->ioprio)) { | 906 | } else if (ioprio_valid(ioc->ioprio)) { |
908 | new_ioc = get_task_io_context(tsk, GFP_KERNEL, NUMA_NO_NODE); | 907 | new_ioc = get_task_io_context(tsk, GFP_KERNEL, NUMA_NO_NODE); |
909 | if (unlikely(!new_ioc)) | 908 | if (unlikely(!new_ioc)) |