[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250323210251.GD14883@redhat.com>
Date: Sun, 23 Mar 2025 22:02:52 +0100
From: Oleg Nesterov <oleg@...hat.com>
To: Mateusz Guzik <mjguzik@...il.com>
Cc: syzbot <syzbot+62262fdc0e01d99573fc@...kaller.appspotmail.com>,
brauner@...nel.org, dhowells@...hat.com, jack@...e.cz,
jlayton@...nel.org, kprateek.nayak@....com,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
netfs@...ts.linux.dev, swapnil.sapkal@....com,
syzkaller-bugs@...glegroups.com, viro@...iv.linux.org.uk
Subject: Re: [syzbot] [netfs?] INFO: task hung in netfs_unbuffered_write_iter
Prateek, Mateusz, thanks for your participation!
On 03/23, Mateusz Guzik wrote:
>
> On Sun, Mar 23, 2025 at 8:47 PM Oleg Nesterov <oleg@...hat.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.
Oleg.
Powered by blists - more mailing lists