linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: K Prateek Nayak <kprateek.nayak@amd.com>
To: Mateusz Guzik <mjguzik@gmail.com>
Cc: Oleg Nesterov <oleg@redhat.com>,
	syzbot <syzbot+62262fdc0e01d99573fc@syzkaller.appspotmail.com>,
	<brauner@kernel.org>, <dhowells@redhat.com>, <jack@suse.cz>,
	<jlayton@kernel.org>, <linux-fsdevel@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <netfs@lists.linux.dev>,
	<swapnil.sapkal@amd.com>, <syzkaller-bugs@googlegroups.com>,
	<viro@zeniv.linux.org.uk>
Subject: Re: [syzbot] [netfs?] INFO: task hung in netfs_unbuffered_write_iter
Date: Mon, 24 Mar 2025 18:49:52 +0530	[thread overview]
Message-ID: <7e377feb-a78b-4055-88cc-2c20f924bf82@amd.com> (raw)
In-Reply-To: <CAGudoHH9w8VO8069iKf_TsAjnfuRSrgiJ2e2D9-NGEDgXW+Lcw@mail.gmail.com>

Hello Mateusz,

On 3/24/2025 6:47 PM, Mateusz Guzik wrote:
> On Mon, Mar 24, 2025 at 11:48 AM K Prateek Nayak <kprateek.nayak@amd.com> wrote:
>>
>> Hello Oleg, Mateusz,
>>
>> On 3/24/2025 2:32 AM, Oleg Nesterov wrote:
>>> Prateek, Mateusz, thanks for your participation!
>>>
>>> On 03/23, Mateusz Guzik wrote:
>>>>
>>>> On Sun, Mar 23, 2025 at 8:47 PM Oleg Nesterov <oleg@redhat.com> wrote:
>>>>>
>>>>> OK, as expected.
>>>>>
>>>>> Dear syzbot, thank you.
>>>>>
>>>>> So far I think this is another problem revealed by aaec5a95d59615523db03dd5
>>>>> ("pipe_read: don't wake up the writer if the pipe is still full").
>>>>>
>>>>> I am going to forget about this report for now and return to it later, when
>>>>> all the pending pipe-related changes in vfs.git are merged.
>>>>>
>>>>
>>>> How do you ask syzbot for all stacks?
>>>
>>> Heh, I don't know.
>>>
>>>> The reproducer *does* use pipes, but it is unclear to me if they play
>>>> any role here
>>>
>>> please see the reproducer,
>>>
>>>        https://syzkaller.appspot.com/x/repro.c?x=10d6a44c580000
>>>
>>>     res = syscall(__NR_pipe2, /*pipefd=*/0x400000001900ul, /*flags=*/0ul);
>>>     if (res != -1) {
>>>       r[2] = *(uint32_t*)0x400000001900;
>>>       r[3] = *(uint32_t*)0x400000001904;
>>>     }
>>>
>>> then
>>>
>>>     res = syscall(__NR_dup, /*oldfd=*/r[3]);
>>>     if (res != -1)
>>>       r[4] = res;
>>>
>>> so r[2] and r[4] are the read/write fd's.
>>>
>>> then later
>>>
>>>      memcpy((void*)0x400000000280, "trans=fd,", 9);
>>>      ...
>>>      memcpy((void*)0x400000000289, "rfdno", 5);
>>>      ...
>>>      sprintf((char*)0x40000000028f, "0x%016llx", (long long)r[2]);
>>>      ...
>>>      memcpy((void*)0x4000000002a2, "wfdno", 5);
>>>      ...
>>>      sprintf((char*)0x4000000002a8, "0x%016llx", (long long)r[4]);
>>>      ...
>>>      syscall(__NR_mount, /*src=*/0ul, /*dst=*/0x400000000000ul,
>>>              /*type=*/0x400000000040ul, /*flags=*/0ul, /*opts=*/0x400000000280ul);
>>>
>>> so this pipe is actually used as "trans=fd".
>>>
>>>> -- and notably we don't know if there is someone stuck
>>>> in pipe code, resulting in not waking up the reported thread.
>>>
>>> Yes, I am not familiar with 9p or netfs, so I don't know either.
>>
>> Didn't have any luck reproducing this yet but I'm looking at
>> https://syzkaller.appspot.com/x/log.txt?x=1397319b980000
>> which is the trimmed log from original report and I see ...
>>
>> [pid  5842] creat("./file0", 000)       = 7
>> [  137.753309][   T30] audit: type=1400 audit(1742312362.045:90): avc:  denied  { mount } for  pid=5842 comm="syz-executor309" name="/" dev="9p" ino=2 scontext=root:sysadm_r:sysadm_t tcontext=system_u:object_r:unlabeled_t tclass=filesystem permissive=1
>> [  137.775741][   T30] audit: type=1400 audit(1742312362.065:91): avc:  denied  { setattr } for  pid=5842 comm="syz-executor309" name="/" dev="9p" ino=2 scontext=root:sysadm_r:sysadm_t tcontext=system_u:object_r:unlabeled_t tclass=file permissive=1
>> [  137.798215][   T30] audit: type=1400 audit(1742312362.075:92): avc:  denied  { write } for  pid=5842 comm="syz-executor309" dev="9p" ino=2 scontext=root:sysadm_r:sysadm_t tcontext=system_u:object_r:unlabeled_t tclass=file permissive=1
>> [  137.819189][   T30] audit: type=1400 audit(1742312362.075:93): avc:  denied  { open } for  pid=5842 comm="syz-executor309" path="/file0" dev="9p" ino=2 scontext=root:sysadm_r:sysadm_t tcontext=system_u:object_r:unlabeled_t tclass=file permissive=1
>> [pid  5842] write(7, "\x08\x00\x00\x00\x1a\x17\x92\x4a\xb2\x18\xea\xcb\x15\xa3\xfc\xcf\x92\x9e\x2d\xd2\x49\x79\x03\xc1\xf8\x53\xd9\x5b\x99\x5c\x65\xe9\x94\x49\xff\x95\x3f\xa1\x1c\x77\x23\xb2\x14\x9e\xcd\xaa\x7f\x83\x3f\x60\xe1\x3b\x19\xa6\x6e\x96\x3f\x7e\x8d\xa4\x29\x7e\xbb\xfd\xda\x5b\x36\xfb\x4d\x01\xbd\x02\xe6\xc6\x52\xdc\x4d\x99\xe2\xcb\x82\xc2\xa1\xd4\xa4\x5e\x4c\x89\xba\x99\x94\xe8\x2f\x85\x4b\xbc\x34\xa4\x0b\x3a"..., 32748 <unfinished ...>
>>
>> So we have a "write" denied for pid 5842 and then it tries a write that
>> seems to hangs. In all the traces for hang, I see a denied for a task
>> followed by a hang for the task in the same tgid.
>>
>> But since this is a "permissive" policy, it should not cause a hang,
>> only report that the program is in violation. Also I have no clue how a
>> spurious wakeup of a writer could then lead to progress.
>>
>> Since in all cases the thread info flags "flags:0x00004006" has the
>> TIF_NOTIFY_SIGNAL bit set, I'm wondering if it has something to do with
>> the fact that pipe_read() directly return -ERESTARTSYS in case of a
>> pending signal without any wakeups?
>>
> 
> Per syzbot this attempt did not work out either.
> 
> I think the blind stabs taken by everyone here are enough.
> 
> The report does not provide the crucial bit: what are the other
> threads doing. Presumably someone else is stuck somewhere, possibly
> not even in pipe code and that stuck thread was supposed to wake up
> the one which trips over hung task detector. Figuring out what that
> thread is imo the next step.
> 
> I failed to find a relevant command in
> https://github.com/google/syzkaller/blob/master/docs/syzbot.md
> 
> So if you guys know someone on syzkaller side, maybe you can ask them
> to tweak the report *or* maybe syzbot can test a "fix" which makes
> hung task detector also report all backtraces? I don't know if that
> can work, the output may be long enough that it will get trimmed by
> something.
> 
> I don't have to time work on this for now, just throwing ideas.

I got the reproducer running locally. Tracing stuff currently to see
what is tripping. Will report back once I find something interesting.
Might take a while since the 9p bits are so far spread out.

-- 
Thanks and Regards,
Prateek


  reply	other threads:[~2025-03-24 13:20 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-22 15:54 [syzbot] [netfs?] INFO: task hung in netfs_unbuffered_write_iter syzbot
2025-03-23 18:48 ` Oleg Nesterov
2025-03-23 19:17   ` syzbot
2025-03-23 19:47     ` Oleg Nesterov
2025-03-23 19:50       ` K Prateek Nayak
2025-03-23 19:52       ` Mateusz Guzik
2025-03-23 21:02         ` Oleg Nesterov
2025-03-24 10:47           ` K Prateek Nayak
2025-03-24 11:15             ` syzbot
2025-03-24 13:17             ` Mateusz Guzik
2025-03-24 13:19               ` K Prateek Nayak [this message]
2025-03-24 14:52                 ` K Prateek Nayak
2025-03-24 16:03                   ` Mateusz Guzik
2025-03-24 16:25                     ` K Prateek Nayak
2025-03-24 16:36                       ` K Prateek Nayak
2025-03-25  2:52                   ` K Prateek Nayak
2025-03-25 12:15                     ` Oleg Nesterov
2025-03-25 12:36                       ` Dominique Martinet
2025-03-25 13:04                       ` Oleg Nesterov
2025-03-25 14:49                         ` K Prateek Nayak
2025-03-25 14:58                           ` Dominique Martinet
2025-03-26 12:19                             ` Oleg Nesterov
2025-03-26 12:44                               ` Oleg Nesterov
2025-03-26 13:05                                 ` Oleg Nesterov
2025-03-27 17:46                             ` K Prateek Nayak
2025-03-27 21:19                               ` syzbot
2025-03-27 22:18                                 ` asmadeus
2025-03-28  4:01                                   ` K Prateek Nayak
2025-03-28  4:43                                     ` syzbot
2025-03-28 13:06                                     ` Oleg Nesterov
2025-03-28 13:07                                       ` syzbot
2025-03-28 13:25                                         ` Oleg Nesterov
2025-03-28 13:49                                           ` syzbot
2025-03-28 14:49                                             ` Oleg Nesterov
2025-03-28 15:22                                               ` syzbot
2025-03-28 17:00                                                 ` Oleg Nesterov
2025-03-28 17:56                                                   ` K Prateek Nayak
2025-03-28 18:20                                                     ` Oleg Nesterov
2025-03-29  0:00                                                   ` asmadeus
2025-03-29 14:21                                                     ` Oleg Nesterov
2025-03-29 23:27                                                       ` asmadeus
2025-03-30 10:21                                                         ` Oleg Nesterov
2025-03-23 20:03     ` Mateusz Guzik
2025-03-23 20:43       ` syzbot
2025-03-28 18:14 ` David Howells
2025-03-28 18:44   ` syzbot
2025-03-28 19:01   ` Oleg Nesterov
2025-08-03 12:09 ` syzbot
     [not found] <20250323002028.3563-1-hdanton@sina.com>
2025-03-23  1:15 ` syzbot
     [not found] <20250323021219.3580-1-hdanton@sina.com>
2025-03-23  2:48 ` syzbot
     [not found] <20250324111613.3620-1-hdanton@sina.com>
2025-03-24 11:34 ` syzbot

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=7e377feb-a78b-4055-88cc-2c20f924bf82@amd.com \
    --to=kprateek.nayak@amd.com \
    --cc=brauner@kernel.org \
    --cc=dhowells@redhat.com \
    --cc=jack@suse.cz \
    --cc=jlayton@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjguzik@gmail.com \
    --cc=netfs@lists.linux.dev \
    --cc=oleg@redhat.com \
    --cc=swapnil.sapkal@amd.com \
    --cc=syzbot+62262fdc0e01d99573fc@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 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).