Re: [PATCH] aio: clean up aio ring in the fail path
On Fri, Dec 06, 2013 at 10:34:13AM -0500, Dave Jones wrote: > On Fri, Dec 06, 2013 at 10:26:54AM -0500, Benjamin LaHaise wrote: > > On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: > > > Clean up the aio ring file in the fail path of aio_setup_ring > > > and ioctx_alloc. And maybe it can fix the GPF issue reported by > > > Dave Jones: > > > https://lkml.org/lkml/2013/11/25/898 > > > > Good catch. I've applied this to my aio-next tree. It does indeed look > > like it could be the cause of Dave's GPF -- I'll try to trigger it with > > some other kernel debug options on and see if the EAGAIN failure case can > > trip it up. > > I think I forgot to reply and let you know this seems to fix it for me. Excellent! I'll send this out and get it queued up for -stable as well. -ben > Dave -- "Thought is the essence of where you are now." -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Fri, Dec 06, 2013 at 10:26:54AM -0500, Benjamin LaHaise wrote: > On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: > > Clean up the aio ring file in the fail path of aio_setup_ring > > and ioctx_alloc. And maybe it can fix the GPF issue reported by > > Dave Jones: > > https://lkml.org/lkml/2013/11/25/898 > > Good catch. I've applied this to my aio-next tree. It does indeed look > like it could be the cause of Dave's GPF -- I'll try to trigger it with > some other kernel debug options on and see if the EAGAIN failure case can > trip it up. I think I forgot to reply and let you know this seems to fix it for me. Dave -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: > Clean up the aio ring file in the fail path of aio_setup_ring > and ioctx_alloc. And maybe it can fix the GPF issue reported by > Dave Jones: > https://lkml.org/lkml/2013/11/25/898 Good catch. I've applied this to my aio-next tree. It does indeed look like it could be the cause of Dave's GPF -- I'll try to trigger it with some other kernel debug options on and see if the EAGAIN failure case can trip it up. -ben > Signed-off-by: Gu Zheng > --- > fs/aio.c |8 ++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 08159ed..6efb7f6 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) > if (nr_pages > AIO_RING_PAGES) { > ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *), > GFP_KERNEL); > - if (!ctx->ring_pages) > + if (!ctx->ring_pages) { > + put_aio_ring_file(ctx); > return -ENOMEM; > + } > } > > ctx->mmap_size = nr_pages * PAGE_SIZE; > @@ -645,7 +647,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) > aio_nr + nr_events < aio_nr) { > spin_unlock(_nr_lock); > err = -EAGAIN; > - goto err; > + goto err_ctx; > } > aio_nr += ctx->max_reqs; > spin_unlock(_nr_lock); > @@ -662,6 +664,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) > > err_cleanup: > aio_nr_sub(ctx->max_reqs); > +err_ctx: > + aio_free_ring(ctx); > err: > free_percpu(ctx->cpu); > free_percpu(ctx->reqs.pcpu_count); > -- > 1.7.7 > -- "Thought is the essence of where you are now." -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Good catch. I've applied this to my aio-next tree. It does indeed look like it could be the cause of Dave's GPF -- I'll try to trigger it with some other kernel debug options on and see if the EAGAIN failure case can trip it up. -ben Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com --- fs/aio.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c index 08159ed..6efb7f6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) if (nr_pages AIO_RING_PAGES) { ctx-ring_pages = kcalloc(nr_pages, sizeof(struct page *), GFP_KERNEL); - if (!ctx-ring_pages) + if (!ctx-ring_pages) { + put_aio_ring_file(ctx); return -ENOMEM; + } } ctx-mmap_size = nr_pages * PAGE_SIZE; @@ -645,7 +647,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) aio_nr + nr_events aio_nr) { spin_unlock(aio_nr_lock); err = -EAGAIN; - goto err; + goto err_ctx; } aio_nr += ctx-max_reqs; spin_unlock(aio_nr_lock); @@ -662,6 +664,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) err_cleanup: aio_nr_sub(ctx-max_reqs); +err_ctx: + aio_free_ring(ctx); err: free_percpu(ctx-cpu); free_percpu(ctx-reqs.pcpu_count); -- 1.7.7 -- Thought is the essence of where you are now. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Fri, Dec 06, 2013 at 10:26:54AM -0500, Benjamin LaHaise wrote: On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Good catch. I've applied this to my aio-next tree. It does indeed look like it could be the cause of Dave's GPF -- I'll try to trigger it with some other kernel debug options on and see if the EAGAIN failure case can trip it up. I think I forgot to reply and let you know this seems to fix it for me. Dave -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Fri, Dec 06, 2013 at 10:34:13AM -0500, Dave Jones wrote: On Fri, Dec 06, 2013 at 10:26:54AM -0500, Benjamin LaHaise wrote: On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Good catch. I've applied this to my aio-next tree. It does indeed look like it could be the cause of Dave's GPF -- I'll try to trigger it with some other kernel debug options on and see if the EAGAIN failure case can trip it up. I think I forgot to reply and let you know this seems to fix it for me. Excellent! I'll send this out and get it queued up for -stable as well. -ben Dave -- Thought is the essence of where you are now. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On 12/05/2013 09:14 AM, Gu Zheng wrote: > Hi Dave, > > On 12/04/2013 10:54 PM, Dave Jones wrote: > >> On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: >> > Clean up the aio ring file in the fail path of aio_setup_ring >> > and ioctx_alloc. And maybe it can fix the GPF issue reported by >> > Dave Jones: >> > https://lkml.org/lkml/2013/11/25/898 >> > >> > >> > Signed-off-by: Gu Zheng >> > --- >> > fs/aio.c |8 ++-- >> > 1 files changed, 6 insertions(+), 2 deletions(-) >> > >> > diff --git a/fs/aio.c b/fs/aio.c >> > index 08159ed..6efb7f6 100644 >> > --- a/fs/aio.c >> > +++ b/fs/aio.c >> > @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) >> > if (nr_pages > AIO_RING_PAGES) { >> > ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *), >> > GFP_KERNEL); >> > - if (!ctx->ring_pages) >> > + if (!ctx->ring_pages) { >> > + put_aio_ring_file(ctx); >> > return -ENOMEM; >> > + } >> > } >> > >> >> CC fs/aio.o >> fs/aio.c: In function ‘aio_setup_ring’: >> fs/aio.c:363:4: error: implicit declaration of function ‘put_aio_ring_file’ >> [-Werror=implicit-function-declaration] >> put_aio_ring_file(ctx); >> >> >> Is this dependant on another patch ? > > It's applied on 3.12-rc2. Please ignore the previous defective patch I sent Sorry, s/3.12-rc2/3.13-rc2/ > before, and try again. > > Regards, > Gu > >> >> Dave >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majord...@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ >> > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
Hi Dave, On 12/04/2013 10:54 PM, Dave Jones wrote: > On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: > > Clean up the aio ring file in the fail path of aio_setup_ring > > and ioctx_alloc. And maybe it can fix the GPF issue reported by > > Dave Jones: > > https://lkml.org/lkml/2013/11/25/898 > > > > > > Signed-off-by: Gu Zheng > > --- > > fs/aio.c |8 ++-- > > 1 files changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/fs/aio.c b/fs/aio.c > > index 08159ed..6efb7f6 100644 > > --- a/fs/aio.c > > +++ b/fs/aio.c > > @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) > >if (nr_pages > AIO_RING_PAGES) { > >ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *), > > GFP_KERNEL); > > - if (!ctx->ring_pages) > > + if (!ctx->ring_pages) { > > + put_aio_ring_file(ctx); > >return -ENOMEM; > > + } > >} > > > > CC fs/aio.o > fs/aio.c: In function ‘aio_setup_ring’: > fs/aio.c:363:4: error: implicit declaration of function ‘put_aio_ring_file’ > [-Werror=implicit-function-declaration] > put_aio_ring_file(ctx); > > > Is this dependant on another patch ? It's applied on 3.12-rc2. Please ignore the previous defective patch I sent before, and try again. Regards, Gu > > Dave > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: > Clean up the aio ring file in the fail path of aio_setup_ring > and ioctx_alloc. And maybe it can fix the GPF issue reported by > Dave Jones: > https://lkml.org/lkml/2013/11/25/898 > > > Signed-off-by: Gu Zheng > --- > fs/aio.c |8 ++-- > 1 files changed, 6 insertions(+), 2 deletions(-) > > diff --git a/fs/aio.c b/fs/aio.c > index 08159ed..6efb7f6 100644 > --- a/fs/aio.c > +++ b/fs/aio.c > @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) > if (nr_pages > AIO_RING_PAGES) { > ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *), >GFP_KERNEL); > -if (!ctx->ring_pages) > +if (!ctx->ring_pages) { > +put_aio_ring_file(ctx); > return -ENOMEM; > +} > } > CC fs/aio.o fs/aio.c: In function ‘aio_setup_ring’: fs/aio.c:363:4: error: implicit declaration of function ‘put_aio_ring_file’ [-Werror=implicit-function-declaration] put_aio_ring_file(ctx); Is this dependant on another patch ? Dave -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] aio: clean up aio ring in the fail path
Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Signed-off-by: Gu Zheng --- fs/aio.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c index 08159ed..6efb7f6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) if (nr_pages > AIO_RING_PAGES) { ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *), GFP_KERNEL); - if (!ctx->ring_pages) + if (!ctx->ring_pages) { + put_aio_ring_file(ctx); return -ENOMEM; + } } ctx->mmap_size = nr_pages * PAGE_SIZE; @@ -645,7 +647,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) aio_nr + nr_events < aio_nr) { spin_unlock(_nr_lock); err = -EAGAIN; - goto err; + goto err_ctx; } aio_nr += ctx->max_reqs; spin_unlock(_nr_lock); @@ -662,6 +664,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) err_cleanup: aio_nr_sub(ctx->max_reqs); +err_ctx: + aio_free_ring(ctx); err: free_percpu(ctx->cpu); free_percpu(ctx->reqs.pcpu_count); -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] aio: clean up aio ring in the fail path
Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com --- fs/aio.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c index 08159ed..6efb7f6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) if (nr_pages AIO_RING_PAGES) { ctx-ring_pages = kcalloc(nr_pages, sizeof(struct page *), GFP_KERNEL); - if (!ctx-ring_pages) + if (!ctx-ring_pages) { + put_aio_ring_file(ctx); return -ENOMEM; + } } ctx-mmap_size = nr_pages * PAGE_SIZE; @@ -645,7 +647,7 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) aio_nr + nr_events aio_nr) { spin_unlock(aio_nr_lock); err = -EAGAIN; - goto err; + goto err_ctx; } aio_nr += ctx-max_reqs; spin_unlock(aio_nr_lock); @@ -662,6 +664,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) err_cleanup: aio_nr_sub(ctx-max_reqs); +err_ctx: + aio_free_ring(ctx); err: free_percpu(ctx-cpu); free_percpu(ctx-reqs.pcpu_count); -- 1.7.7 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com --- fs/aio.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c index 08159ed..6efb7f6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) if (nr_pages AIO_RING_PAGES) { ctx-ring_pages = kcalloc(nr_pages, sizeof(struct page *), GFP_KERNEL); -if (!ctx-ring_pages) +if (!ctx-ring_pages) { +put_aio_ring_file(ctx); return -ENOMEM; +} } CC fs/aio.o fs/aio.c: In function ‘aio_setup_ring’: fs/aio.c:363:4: error: implicit declaration of function ‘put_aio_ring_file’ [-Werror=implicit-function-declaration] put_aio_ring_file(ctx); Is this dependant on another patch ? Dave -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
Hi Dave, On 12/04/2013 10:54 PM, Dave Jones wrote: On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com --- fs/aio.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c index 08159ed..6efb7f6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) if (nr_pages AIO_RING_PAGES) { ctx-ring_pages = kcalloc(nr_pages, sizeof(struct page *), GFP_KERNEL); - if (!ctx-ring_pages) + if (!ctx-ring_pages) { + put_aio_ring_file(ctx); return -ENOMEM; + } } CC fs/aio.o fs/aio.c: In function ‘aio_setup_ring’: fs/aio.c:363:4: error: implicit declaration of function ‘put_aio_ring_file’ [-Werror=implicit-function-declaration] put_aio_ring_file(ctx); Is this dependant on another patch ? It's applied on 3.12-rc2. Please ignore the previous defective patch I sent before, and try again. Regards, Gu Dave -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] aio: clean up aio ring in the fail path
On 12/05/2013 09:14 AM, Gu Zheng wrote: Hi Dave, On 12/04/2013 10:54 PM, Dave Jones wrote: On Wed, Dec 04, 2013 at 06:19:06PM +0800, Gu Zheng wrote: Clean up the aio ring file in the fail path of aio_setup_ring and ioctx_alloc. And maybe it can fix the GPF issue reported by Dave Jones: https://lkml.org/lkml/2013/11/25/898 Signed-off-by: Gu Zheng guz.f...@cn.fujitsu.com --- fs/aio.c |8 ++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/aio.c b/fs/aio.c index 08159ed..6efb7f6 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -367,8 +367,10 @@ static int aio_setup_ring(struct kioctx *ctx) if (nr_pages AIO_RING_PAGES) { ctx-ring_pages = kcalloc(nr_pages, sizeof(struct page *), GFP_KERNEL); - if (!ctx-ring_pages) + if (!ctx-ring_pages) { + put_aio_ring_file(ctx); return -ENOMEM; + } } CC fs/aio.o fs/aio.c: In function ‘aio_setup_ring’: fs/aio.c:363:4: error: implicit declaration of function ‘put_aio_ring_file’ [-Werror=implicit-function-declaration] put_aio_ring_file(ctx); Is this dependant on another patch ? It's applied on 3.12-rc2. Please ignore the previous defective patch I sent Sorry, s/3.12-rc2/3.13-rc2/ before, and try again. Regards, Gu Dave -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/