Skip to contentSkip to conversation

xfs: ensure committed is initialized in xfs_trans_roll

PATCH In review Eric Sandeen 2 participants 2 messages Mar 10, 2016 – Mar 11, 2016 XFS filesystem

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 xfs: ensure committed is initialized in xfs_trans_roll

__xfs_trans_roll() can return without setting the *committed argument; this was a problem for xfs_bmap_finish():

int committed;/* xact committed or not */
...

        error = __xfs_trans_roll(tp, ip, &committed);
        if (error) {
...
                if (committed) {

and we tested an uninitialized "committed" variable on the error path. No caller is preserving "committed" state across calls to __xfs_trans_roll(), so just initialize committed inside the function to avoid future errors like this.

---

fs/xfs/xfs_trans.c +3 -1
index 748b16a..20c5366 100644
@@ -1028,6 +1028,8 @@ __xfs_trans_roll(
 	struct xfs_trans_res	tres;
 	int			error;
 
+	*committed = 0;
+
 	/*
 	 * Ensure that the inode is always logged.
 	 */
@@ -1082,6 +1084,6 @@ xfs_trans_roll(
 	struct xfs_trans	**tpp,
 	struct xfs_inode	*dp)
 {
-	int			committed = 0;
+	int			committed;
 	return __xfs_trans_roll(tpp, dp, &committed);
 }

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs