2007-01-25 09:02:52

by Sébastien Dugué

[permalink] [raw]
Subject: [PATCH -mm] AIO - Comment aio_setup_sigevent() explaining why there is no task ref leak


Here it is

On Thu, 25 Jan 2007 05:42:42 +0000 Christoph Hellwig <[email protected]> wrote:

> On Wed, Jan 24, 2007 at 12:11:30PM +0100, S?bastien Dugu? wrote:
> > > > + if (unlikely(!notify->sigq))
> > > > + return -EAGAIN;
> > >
> > > Did this just leak a ref on the task_struct?
> > >
> >
> > No, the ref is released in really_put_req() when we dispose of
> > the iocb.
>
> And the code really needs a comment explaining this. I tripped over
> this before, and I think it's even already the second time Andrew
> stumbled over it.
>

From: S?bastien Dugu? <[email protected]>

Add a comment explaining why there is no task ref leak in
aio_setup_sigevent().


aio.c | 5 +++++
1 file changed, 5 insertions(+)


Signed-off-by: S?bastien Dugu? <[email protected]>

Index: linux-2.6.20-rc4-mm1/fs/aio.c
===================================================================
--- linux-2.6.20-rc4-mm1.orig/fs/aio.c 2007-01-17 08:59:16.000000000 +0100
+++ linux-2.6.20-rc4-mm1/fs/aio.c 2007-01-25 09:52:29.000000000 +0100
@@ -987,6 +987,11 @@ static long aio_setup_sigevent(struct ai
*/
notify->sigq = sigqueue_alloc();

+ /*
+ * The task ref will be released in really_put_req()
+ * when we dispose of the iocb later on in the submission
+ * path.
+ */
if (unlikely(!notify->sigq))
return -EAGAIN;