2008-11-19 06:44:06

by Nikanth Karthikesan

[permalink] [raw]
Subject: [PATCH] Do not free io context when taking recursive faults in do_exit

When taking recursive faults in do_exit, if the io_context is not null,
exit_io_context() is being called. But it might decrement the refcount
more than once. It is better to leave this task alone.

Signed-off-by: Nikanth Karthikesan <[email protected]>

---

diff --git a/kernel/exit.c b/kernel/exit.c
index 80137a5..22dedf5 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -1024,8 +1024,6 @@ NORET_TYPE void do_exit(long code)
* task into the wait for ever nirwana as well.
*/
tsk->flags |= PF_EXITPIDONE;
- if (tsk->io_context)
- exit_io_context();
set_current_state(TASK_UNINTERRUPTIBLE);
schedule();
}


2008-11-19 09:19:00

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] Do not free io context when taking recursive faults in do_exit

On Wed, Nov 19 2008, Nikanth Karthikesan wrote:
> When taking recursive faults in do_exit, if the io_context is not null,
> exit_io_context() is being called. But it might decrement the refcount
> more than once. It is better to leave this task alone.

Agree, it's better to just leave that alone. Applied to for-2.6.29.

--
Jens Axboe