mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
[XFS] Fix sparse warning in xlog_recover_do_efd_trans.
Sparse trips over the locking order in xlog_recover_do_efd_trans() when xfs_trans_delete_ail() drops the ail lock. Because the unlock is conditional, we need to either annotate with a "fake unlock" or change the structure of the code so sparse thinks the function always unlocks. Reordering the code makes it simpler, so do that. SGI-PV: 972755 SGI-Modid: xfs-linux-melb:xfs-kern:30003a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
parent
a8272ce0c1
commit
8ae2c0f64a
1 changed files with 3 additions and 11 deletions
|
@ -2733,22 +2733,14 @@ xlog_recover_do_efd_trans(
|
|||
* AIL lock.
|
||||
*/
|
||||
xfs_trans_delete_ail(mp, lip);
|
||||
break;
|
||||
xfs_efi_item_free(efip);
|
||||
return;
|
||||
}
|
||||
}
|
||||
lip = xfs_trans_next_ail(mp, lip, &gen, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* If we found it, then free it up. If it wasn't there, it
|
||||
* must have been overwritten in the log. Oh well.
|
||||
*/
|
||||
if (lip != NULL) {
|
||||
xfs_efi_item_free(efip);
|
||||
} else {
|
||||
spin_unlock(&mp->m_ail_lock);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Perform the transaction
|
||||
|
|
Loading…
Reference in a new issue