Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ae2c0f6 authored by David Chinner's avatar David Chinner Committed by Lachlan McIlroy
Browse files

[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: default avatarDavid Chinner <dgc@sgi.com>
Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarLachlan McIlroy <lachlan@sgi.com>
parent a8272ce0
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -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