On Tue, Sep 3, 2019 at 3:39 PM Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > On Tue, Sep 03, 2019 at 09:31:29AM +0200, Miklos Szeredi wrote: > > On Fri, Aug 23, 2019 at 1:35 AM Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > > > > > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > > > > > When IOCB_CMD_POLL is used on the FUSE device, aio_poll() disables IRQs > > > and takes kioctx::ctx_lock, then fuse_iqueue::waitq.lock. > > > > Not in -linus. > > > > Which tree was this reproduced with? > > > > Thanks, > > Miklos > > Linus's tree. Here's the full symbolized output on v5.3-rc7: Okay. TBH, I find the fix disgusting. It's confusing to sprinke code that has absolutely nothing to do with interrupts with spin_lock_irq() calls. I think the lock/unlock calls should at least be done with a helper with a comment explaining why disabling interrupts is needed (though I have not managed to understand why aio needs to actually mess with the waitq lock...) Probably a better fix would be to just use a separate spinlock to avoid the need to disable interrupts in cases where it's not necessary. Thanks, Miklos