Showing error 946

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/super.c
Line in file: 805
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-03-02 21:35:17 UTC


Source:

775        up(&bdev->bd_mount_sem);
776        if (IS_ERR(s))
777                goto error_s;
778
779        if (s->s_root) {
780                if ((flags ^ s->s_flags) & MS_RDONLY) {
781                        up_write(&s->s_umount);
782                        deactivate_super(s);
783                        error = -EBUSY;
784                        goto error_bdev;
785                }
786
787                close_bdev_exclusive(bdev, mode);
788        } else {
789                char b[BDEVNAME_SIZE];
790
791                s->s_flags = flags;
792                s->s_mode = mode;
793                strlcpy(s->s_id, bdevname(bdev, b), sizeof(s->s_id));
794                sb_set_blocksize(s, block_size(bdev));
795                error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);
796                if (error) {
797                        up_write(&s->s_umount);
798                        deactivate_super(s);
799                        goto error;
800                }
801
802                s->s_flags |= MS_ACTIVE;
803        }
804
805        return simple_set_mnt(mnt, s);
806
807error_s:
808        error = PTR_ERR(s);
809error_bdev:
810        close_bdev_exclusive(bdev, mode);
811error:
812        return error;
813}
814
815EXPORT_SYMBOL(get_sb_bdev);
Show full sources