On Thu, Oct 03, 2019 at 05:54:35PM +0200, Greg Kroah-Hartman wrote:
>  
>  static void queue_interrupt(struct fuse_iqueue *fiq, struct fuse_req *req)
>  {
> -     spin_lock(&fiq->waitq.lock);
> +     spin_lock(&fiq->lock);
>       if (test_bit(FR_FINISHED, &req->flags)) {
> -             spin_unlock(&fiq->waitq.lock);
> +             spin_unlock(&fiq->lock);
>               return;
>       }
>       if (list_empty(&req->intr_entry)) {
>               list_add_tail(&req->intr_entry, &fiq->interrupts);
>               wake_up_locked(&fiq->waitq);
>       }
> -     spin_unlock(&fiq->waitq.lock);
> +     spin_unlock(&fiq->lock);
>       kill_fasync(&fiq->fasync, SIGIO, POLL_IN);
>  }

This isn't backported correctly.  wake_up_locked() needs to be changed to 
wake_up().

diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index c0d59a86ada2e..6d39143cfa094 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -434,7 +434,7 @@ static void queue_interrupt(struct fuse_iqueue *fiq, struct 
fuse_req *req)
        }
        if (list_empty(&req->intr_entry)) {
                list_add_tail(&req->intr_entry, &fiq->interrupts);
-               wake_up_locked(&fiq->waitq);
+               wake_up(&fiq->waitq);
        }
        spin_unlock(&fiq->lock);
        kill_fasync(&fiq->fasync, SIGIO, POLL_IN);

Reply via email to