Thread (8 messages) 8 messages, 4 authors, 2022-08-02

Re: INFO: task hung in __floppy_read_block_0

From: Willy Tarreau <w@1wt.eu>
Date: 2022-08-02 16:50:13
Also in: lkml

Hi,

On Mon, Aug 01, 2022 at 10:04:46PM -0700, Dipanjan Das wrote:
On Sun, Jul 31, 2022 at 2:53 AM Willy Tarreau [off-list ref] wrote:
quoted
Thus I'm a bit confused about what to look for. It's very likely that
there are still bugs left in this driver, but trying to identify them
and to validate a fix will be difficult if they cannot be reproduced.
Maybe they only happen under emulation due to timing issues.

As such, any hint about the exact setup and how long to wait to get
the error would be much appreciated.
We can confirm that we were able to trigger the issue on the latest
5.19 (commit: 3d7cb6b04c3f3115719235cc6866b10326de34cd) with the
C-repro within a VM. We use this:
https://syzkaller.appspot.com/text?tag=KernelConfig&x=cd73026ceaed1402
 config to build the kernel. The issue triggers after around 143
seconds. For all the five times we tried, we were able to reproduce
the issue deterministically every time. Please let us know if you need
any other information.
Yep, I could reproduce it under qemu as well. I've added traces, and
ugly things are happening with the lock (but I haven't understood what
yet). What I saw was that process_fd_request() is first called under
lock, then we drop the lock, then __floppy_read_block_0() is called
under lock, which calls process_fd_request(), then the lock is dropped,
wait_for_completion() is called, then process_fd_request() is called
again without lock this time, and from there we're looping in
fd_wait_for_completion. I need to dig into more details but it doesn't
seem right to me that process_fd_request() is sometimes called under a
lock and sometimes out, and that __floppy_read_block_0() is called with
a lock held and it's relesed under it. I could have missed certain things
due to the concurrent accesses but in any case I should probably not be
observing this.

I'll try to dig deeper. I really don't know that area and I must confess
it's not the most exciting to rediscover each time :-)

Thanks,
Willy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help