From: Tejun Heo <tj@kernel.org>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Jens Axboe <jaxboe@fusionio.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Alan Cox <alan@linux.intel.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] block: avoid infinite loop in get_task_io_context()
Date: Fri, 1 Jun 2012 14:06:01 +0900 [thread overview]
Message-ID: <20120601050601.GF32121@google.com> (raw)
In-Reply-To: <1338460706.2760.1330.camel@edumazet-glaptop>
Hello, Eric, Jens.
On Thu, May 31, 2012 at 12:38:26PM +0200, Eric Dumazet wrote:
> [PATCH] block: avoid infinite loop in get_task_io_context()
>
> Calling get_task_io_context() on a exiting task which isn't %current can
> loop forever. This triggers at boot time on my dev machine.
>
> BUG: soft lockup - CPU#3 stuck for 22s ! [mountall.1603]
>
> Fix this by making create_task_io_context() returns -EBUSY in this case
> to break the loop.
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Tejun Heo <tj@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Alan Cox <alan@linux.intel.com>
> ---
> block/blk-ioc.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/block/blk-ioc.c b/block/blk-ioc.c
> index 1e2d53b..893b800 100644
> --- a/block/blk-ioc.c
> +++ b/block/blk-ioc.c
> @@ -235,6 +235,7 @@ void ioc_clear_queue(struct request_queue *q)
> int create_task_io_context(struct task_struct *task, gfp_t gfp_flags, int node)
> {
> struct io_context *ioc;
> + int ret;
>
> ioc = kmem_cache_alloc_node(iocontext_cachep, gfp_flags | __GFP_ZERO,
> node);
> @@ -262,9 +263,12 @@ int create_task_io_context(struct task_struct *task, gfp_t gfp_flags, int node)
> task->io_context = ioc;
> else
> kmem_cache_free(iocontext_cachep, ioc);
> +
> + ret = task->io_context ? 0 : -EBUSY;
> +
> task_unlock(task);
>
> - return 0;
> + return ret;
Ah, right. This seems correct to me.
FWIW-late-Acked-by: Tejun Heo <tj@kernel.org>
Thanks. :)
--
tejun
prev parent reply other threads:[~2012-06-01 5:06 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-30 12:54 [GIT PULL] Block driver bits for 3.5 Jens Axboe
2012-05-30 18:33 ` Eric Dumazet
2012-05-30 18:55 ` Jens Axboe
2012-05-30 19:08 ` Eric Dumazet
2012-05-30 19:17 ` Jens Axboe
2012-05-30 20:35 ` Eric Dumazet
2012-05-30 20:58 ` Linus Torvalds
2012-05-31 9:35 ` [PATCH] tty: add lockdep annotations Eric Dumazet
2012-05-31 11:45 ` Jiri Kosina
2012-05-31 11:59 ` Eric Dumazet
2012-06-01 18:17 ` Eric Dumazet
2012-06-01 18:51 ` Linus Torvalds
2012-06-01 20:38 ` Alan Cox
2012-06-01 20:46 ` Eric Dumazet
2012-06-01 20:44 ` Eric Dumazet
2012-06-01 20:56 ` Alan Cox
2012-06-01 20:59 ` Eric Dumazet
2012-06-02 7:17 ` Eric Dumazet
2012-06-02 7:55 ` Eric Dumazet
2012-06-02 8:01 ` Eric Dumazet
2012-06-02 11:57 ` Alan Cox
2012-06-02 12:30 ` Eric Dumazet
2012-06-02 18:38 ` Linus Torvalds
2012-06-02 19:59 ` Linus Torvalds
2012-06-02 20:01 ` Linus Torvalds
2012-06-02 20:19 ` Alan Cox
2012-06-02 22:25 ` Linus Torvalds
2012-06-02 23:02 ` Alan Cox
2012-06-02 23:14 ` Linus Torvalds
2012-06-03 1:37 ` Linus Torvalds
2012-06-03 13:06 ` Alan Cox
2012-06-03 13:24 ` Alan Cox
2012-06-03 19:44 ` Eric Dumazet
2012-06-02 20:00 ` Alan Cox
2012-05-31 10:38 ` [PATCH] block: avoid infinite loop in get_task_io_context() Eric Dumazet
2012-05-31 10:47 ` Jens Axboe
2012-05-31 10:51 ` Eric Dumazet
2012-05-31 10:56 ` Jens Axboe
2012-06-01 5:06 ` Tejun Heo [this message]
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=20120601050601.GF32121@google.com \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alan@linux.intel.com \
--cc=eric.dumazet@gmail.com \
--cc=jaxboe@fusionio.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.