Showing error 1207

User: Jiri Slaby
Error type: Double Unlock
Error type description: Some lock is unlocked twice unintentionally in a sequence
File location: fs/xfs/linux-2.6/xfs_lrw.c
Line in file: 815
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-04-30 10:52:00 UTC


Source:

785                if (error)
786                        goto out_unlock_internal;
787                pos = xip->i_size;
788                ret = 0;
789                goto retry;
790        }
791
792        isize = i_size_read(inode);
793        if (unlikely(ret < 0 && ret != -EFAULT && *offset > isize))
794                *offset = isize;
795
796        if (*offset > xip->i_size) {
797                xfs_ilock(xip, XFS_ILOCK_EXCL);
798                if (*offset > xip->i_size)
799                        xip->i_size = *offset;
800                xfs_iunlock(xip, XFS_ILOCK_EXCL);
801        }
802
803        error = -ret;
804        if (ret <= 0)
805                goto out_unlock_internal;
806
807        XFS_STATS_ADD(xs_write_bytes, ret);
808
809        /* Handle various SYNC-type writes */
810        if ((file->f_flags & O_SYNC) || IS_SYNC(inode)) {
811                int error2;
812
813                xfs_iunlock(xip, iolock);
814                if (need_i_mutex)
815                        mutex_unlock(&inode->i_mutex);
816                error2 = sync_page_range(inode, mapping, pos, ret);
817                if (!error)
818                        error = error2;
819                if (need_i_mutex)
820                        mutex_lock(&inode->i_mutex);
821                xfs_ilock(xip, iolock);
822                error2 = xfs_write_sync_logforce(mp, xip);
823                if (!error)
824                        error = error2;
825        }
Show full sources