All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Hillf Danton <hdanton@sina.com>,
	Stefano Garzarella <sgarzare@redhat.com>
Cc: syzbot <syzbot+3c23789ea938faaef049@syzkaller.appspotmail.com>,
	io-uring@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Pavel Begunkov <asml.silence@gmail.com>,
	syzkaller-bugs@googlegroups.com, viro@zeniv.linux.org.uk
Subject: Re: INFO: task hung in io_sq_thread_stop
Date: Wed, 9 Sep 2020 08:05:33 -0600	[thread overview]
Message-ID: <4d55d988-d45e-ba36-fed7-342e0a6ab16e@kernel.dk> (raw)
In-Reply-To: <20200909134317.19732-1-hdanton@sina.com>

On 9/9/20 7:43 AM, Hillf Danton wrote:
> 
> On Wed, 9 Sep 2020 12:03:55 +0200 Stefano Garzarella wrote:
>> On Wed, Sep 09, 2020 at 01:49:22AM -0700, syzbot wrote:
>>> Hello,
>>>
>>> syzbot found the following issue on:
>>>
>>> HEAD commit:    dff9f829 Add linux-next specific files for 20200908
>>> git tree:       linux-next
>>> console output: https://syzkaller.appspot.com/x/log.txt?x=112f880d900000
>>> kernel config:  https://syzkaller.appspot.com/x/.config?x=37b3426c77bda44c
>>> dashboard link: https://syzkaller.appspot.com/bug?extid=3c23789ea938faaef049
>>> compiler:       gcc (GCC) 10.1.0-syz 20200507
>>> syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=17c082a5900000
>>> C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=1474f5f9900000
>>>
>>> Bisection is inconclusive: the first bad commit could be any of:
>>>
>>> d730b1a2 io_uring: add IOURING_REGISTER_RESTRICTIONS opcode
>>> 7ec3d1dd io_uring: allow disabling rings during the creation
>>
>> I'm not sure it is related, but while rebasing I forgot to update the
>> right label in the error path.
>>
>> Since the check of ring state is after the increase of ctx refcount, we
>> need to decrease it jumping to 'out' label instead of 'out_fput':
> 
> I think we need to fix 6a7bb9ff5744 ("io_uring: remove need for
> sqd->ctx_lock in io_sq_thread()") because the syzbot report
> indicates the io_sq_thread has to wake up the kworker before
> scheduling, and in turn the kworker has the chance to unpark it.
> 
> Below is the minimum walkaround I can have because it can't
> ensure the parker will be waken in every case.
> 
> --- a/fs/io_uring.c
> +++ b/fs/io_uring.c
> @@ -6834,6 +6834,10 @@ static int io_sq_thread(void *data)
>  			io_sq_thread_drop_mm();
>  		}
>  
> +		if (kthread_should_park()) {
> +			/* wake up parker before scheduling */
> +			continue;
> +		}
>  		if (ret & SQT_SPIN) {
>  			io_run_task_work();
>  			cond_resched();
> 

I think this should go in the slow path:


diff --git a/fs/io_uring.c b/fs/io_uring.c
index 652cc53432d4..1c4fa2a0fd82 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -6839,6 +6839,8 @@ static int io_sq_thread(void *data)
 		} else if (ret == SQT_IDLE) {
 			list_for_each_entry(ctx, &sqd->ctx_list, sqd_list)
 				io_ring_set_wakeup_flag(ctx);
+			if (kthread_should_park())
+				continue;
 			schedule();
 			start_jiffies = jiffies;
 		}

-- 
Jens Axboe


  parent reply	other threads:[~2020-09-09 17:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-09  8:49 INFO: task hung in io_sq_thread_stop syzbot
2020-09-09 10:03 ` Stefano Garzarella
2020-09-09 14:03   ` Jens Axboe
2020-09-09 15:07     ` Stefano Garzarella
     [not found] ` <20200909134317.19732-1-hdanton@sina.com>
2020-09-09 14:05   ` Jens Axboe [this message]
2020-09-09 15:32     ` Stefano Garzarella
2020-10-30 10:06       ` Dmitry Vyukov

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=4d55d988-d45e-ba36-fed7-342e0a6ab16e@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=asml.silence@gmail.com \
    --cc=hdanton@sina.com \
    --cc=io-uring@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sgarzare@redhat.com \
    --cc=syzbot+3c23789ea938faaef049@syzkaller.appspotmail.com \
    --cc=syzkaller-bugs@googlegroups.com \
    --cc=viro@zeniv.linux.org.uk \
    /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.