Showing error 1077

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: fs/fuse/dev.c
Line in file: 682
Project: Linux Kernel
Project version: 2.6.28
Tools: Undetermined 1
Entered: 2012-03-04 17:07:06 UTC


Source:

 652                if (i == numargs - 1 && argpages)
 653                        err = fuse_copy_pages(cs, arg->size, zeroing);
 654                else
 655                        err = fuse_copy_one(cs, arg->value, arg->size);
 656        }
 657        return err;
 658}
 659
 660static int request_pending(struct fuse_conn *fc)
 661{
 662        return !list_empty(&fc->pending) || !list_empty(&fc->interrupts);
 663}
 664
 665/* Wait until a request is available on the pending list */
 666static void request_wait(struct fuse_conn *fc)
 667{
 668        DECLARE_WAITQUEUE(wait, current);
 669
 670        add_wait_queue_exclusive(&fc->waitq, &wait);
 671        while (fc->connected && !request_pending(fc)) {
 672                set_current_state(TASK_INTERRUPTIBLE);
 673                if (signal_pending(current))
 674                        break;
 675
 676                spin_unlock(&fc->lock);
 677                schedule();
 678                spin_lock(&fc->lock);
 679        }
 680        set_current_state(TASK_RUNNING);
 681        remove_wait_queue(&fc->waitq, &wait);
 682}
 683
 684/*
 685 * Transfer an interrupt request to userspace
 686 *
 687 * Unlike other requests this is assembled on demand, without a need
 688 * to allocate a separate fuse_req structure.
 689 *
 690 * Called with fc->lock held, releases it
 691 */
 692static int fuse_read_interrupt(struct fuse_conn *fc, struct fuse_req *req,
Show full sources