Showing error 999

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


Source:

 95xfs_efi_item_pin(xfs_efi_log_item_t *efip)
 96{
 97        return;
 98}
 99
100
101/*
102 * While EFIs cannot really be pinned, the unpin operation is the
103 * last place at which the EFI is manipulated during a transaction.
104 * Here we coordinate with xfs_efi_cancel() to determine who gets to
105 * free the EFI.
106 */
107/*ARGSUSED*/
108STATIC void
109xfs_efi_item_unpin(xfs_efi_log_item_t *efip, int stale)
110{
111        xfs_mount_t        *mp;
112
113        mp = efip->efi_item.li_mountp;
114        spin_lock(&mp->m_ail_lock);
115        if (efip->efi_flags & XFS_EFI_CANCELED) {
116                /*
117                 * xfs_trans_delete_ail() drops the AIL lock.
118                 */
119                xfs_trans_delete_ail(mp, (xfs_log_item_t *)efip);
120                xfs_efi_item_free(efip);
121        } else {
122                efip->efi_flags |= XFS_EFI_COMMITTED;
123                spin_unlock(&mp->m_ail_lock);
124        }
125}
126
127/*
128 * like unpin only we have to also clear the xaction descriptor
129 * pointing the log item if we free the item.  This routine duplicates
130 * unpin because efi_flags is protected by the AIL lock.  Freeing
131 * the descriptor and then calling unpin would force us to drop the AIL
132 * lock which would open up a race condition.
133 */
134STATIC void
135xfs_efi_item_unpin_remove(xfs_efi_log_item_t *efip, xfs_trans_t *tp)
Show full sources