diff options
| -rw-r--r-- | fs/xfs/xfs_extfree_item.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c index c0f375087efc..452920a3f03f 100644 --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c | |||
| @@ -305,11 +305,12 @@ xfs_efi_release(xfs_efi_log_item_t *efip, | |||
| 305 | { | 305 | { |
| 306 | ASSERT(atomic_read(&efip->efi_next_extent) >= nextents); | 306 | ASSERT(atomic_read(&efip->efi_next_extent) >= nextents); |
| 307 | if (atomic_sub_and_test(nextents, &efip->efi_next_extent)) { | 307 | if (atomic_sub_and_test(nextents, &efip->efi_next_extent)) { |
| 308 | __xfs_efi_release(efip); | ||
| 309 | |||
| 310 | /* recovery needs us to drop the EFI reference, too */ | 308 | /* recovery needs us to drop the EFI reference, too */ |
| 311 | if (test_bit(XFS_EFI_RECOVERED, &efip->efi_flags)) | 309 | if (test_bit(XFS_EFI_RECOVERED, &efip->efi_flags)) |
| 312 | __xfs_efi_release(efip); | 310 | __xfs_efi_release(efip); |
| 311 | |||
| 312 | __xfs_efi_release(efip); | ||
| 313 | /* efip may now have been freed, do not reference it again. */ | ||
| 313 | } | 314 | } |
| 314 | } | 315 | } |
| 315 | 316 | ||
