aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fork.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2012-03-05 16:15:25 -0500
committerJens Axboe <axboe@kernel.dk>2012-03-06 15:27:24 -0500
commit3d48749d93a3dce732dd30a14002ab90ec4355f3 (patch)
tree50ce414ec87e590493476cf644092439c5f337fd /kernel/fork.c
parent24acfc34fba0b4f62ef9d5c2616eb0faa802b606 (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.c5
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))