LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: "Sébastien Dugué" <sebastien.dugue@bull.net>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	linux-aio <linux-aio@kvack.org>,
	Bharata B Rao <bharata@in.ibm.com>,
	Christoph Hellwig <hch@infradead.org>,
	Suparna Bhattacharya <suparna@in.ibm.com>,
	Ulrich Drepper <drepper@redhat.com>,
	Zach Brown <zach.brown@oracle.com>,
	Jean Pierre Dion <jean-pierre.dion@bull.net>,
	Badari Pulavarty <pbadari@us.ibm.com>
Subject: Re: [PATCH -mm 5/5][AIO] - Add listio syscall support
Date: Tue, 23 Jan 2007 21:50:47 -0800	[thread overview]
Message-ID: <20070123215047.be8d8d79.akpm@osdl.org> (raw)
In-Reply-To: <20070117105554.346324b4@frecb000686>

On Wed, 17 Jan 2007 10:55:54 +0100
Sébastien Dugué <sebastien.dugue@bull.net> wrote:

> +asmlinkage long
> +compat_sys_lio_submit(aio_context_t ctx_id, int mode, int nr, u32 __user *iocb,
> +		struct compat_sigevent __user *sig_user)
> +{
> +	struct kioctx *ctx;
> +	struct lio_event *lio = NULL;
> +	struct sigevent __user *event = NULL;
> +	long ret = 0;
> +
> +	if (unlikely(nr < 0))
> +		return -EINVAL;
> +
> +	if (unlikely(!access_ok(VERIFY_READ, iocb, (nr * sizeof(u32)))))
> +		return -EFAULT;
> +
> +	ctx = lookup_ioctx(ctx_id);
> +	if (unlikely(!ctx))
> +		return -EINVAL;
> +
> +	if (sig_user) {
> +		struct sigevent kevent;
> +		event = compat_alloc_user_space(sizeof(struct sigevent));
> +		if (get_compat_sigevent(&kevent, sig_user) ||
> +			copy_to_user(event, &kevent, sizeof(struct sigevent)))
> +			return -EFAULT;

I think we just leaked a ref against the ioctx.

That's two.  Please re-review the whole patchset for leaks like this.

Please also do not do returns from the middle of functions like this.  It's just
asking for resource leaks, either now or in the future.


> +	}
> +
> +	lio = lio_create(event, mode);
> +
> +	ret = PTR_ERR(lio);
> +	if (IS_ERR(lio))
> +		goto out_put_ctx;
> +
> +	ret = compat_io_submit_group(ctx, nr, iocb, lio);
> +
> +	/* If we failed to submit even one request just return */
> +	if (ret < 0) {
> +		if (lio)
> +			kfree(lio);
> +		goto out_put_ctx;
> +	}
> +
> +	/*
> +	 * Drop extra ref on the lio now that we're done submitting requests.
> +	 */
> +	if (lio)
> +		lio_check(lio);
> +
> +
> +	if (mode == LIO_WAIT) {
> +		wait_event(ctx->wait, atomic_read(&lio->lio_users) == 0);
> +		kfree(lio);
> +	}
> +out_put_ctx:
>  	put_ioctx(ctx);
> -	return i ? i: ret;
> +	return ret;
>  }

  reply	other threads:[~2007-01-24  5:53 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070117104601.36b2ab18@frecb000686>
2007-01-17  9:48 ` [PATCH -mm 1/5][AIO] - Rework compat_sys_io_submit Sébastien Dugué
2007-01-17  9:48 ` [PATCH -mm 2/5][AIO] - fix aio.h includes Sébastien Dugué
2007-01-17  9:49 ` [PATCH -mm 3/5][AIO] - Make good_sigevent non-static Sébastien Dugué
2007-01-17  9:50 ` [PATCH -mm 4/5][AIO] - AIO completion signal notification Sébastien Dugué
2007-01-24  5:35   ` Andrew Morton
2007-01-24 11:11     ` Sébastien Dugué
2007-01-25  5:42       ` Christoph Hellwig
2007-01-25  8:46         ` Sébastien Dugué
2007-01-17  9:55 ` [PATCH -mm 5/5][AIO] - Add listio syscall support Sébastien Dugué
2007-01-24  5:50   ` Andrew Morton [this message]
2007-01-24 11:51     ` Sébastien Dugué
2007-01-24  5:53   ` Andrew Morton
2007-01-24  9:52     ` Laurent Vivier
2007-01-24 11:53       ` Sébastien Dugué
2007-01-24  6:04   ` Andrew Morton
2007-01-24 12:02     ` Sébastien Dugué
2007-01-24 18:16     ` Bharata B Rao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070123215047.be8d8d79.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=bharata@in.ibm.com \
    --cc=drepper@redhat.com \
    --cc=hch@infradead.org \
    --cc=jean-pierre.dion@bull.net \
    --cc=linux-aio@kvack.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbadari@us.ibm.com \
    --cc=sebastien.dugue@bull.net \
    --cc=suparna@in.ibm.com \
    --cc=zach.brown@oracle.com \
    --subject='Re: [PATCH -mm 5/5][AIO] - Add listio syscall support' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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).