aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_trans.c
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2016-03-14 20:42:47 -0400
committerDave Chinner <david@fromorbit.com>2016-03-14 20:42:47 -0400
commitcc07eed8336d6452214d13e0cba770a0f5296a7f (patch)
treec480a343183a036e4c46b02b8e4714f5aea0d9b5 /fs/xfs/xfs_trans.c
parentd34999c97ae87cd56514b8cbc6269651efe274fe (diff)
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. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_trans.c')
-rw-r--r--fs/xfs/xfs_trans.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c
index 748b16aff45a..20c53666cb4b 100644
--- a/fs/xfs/xfs_trans.c
+++ b/fs/xfs/xfs_trans.c
@@ -1028,6 +1028,8 @@ __xfs_trans_roll(
1028 struct xfs_trans_res tres; 1028 struct xfs_trans_res tres;
1029 int error; 1029 int error;
1030 1030
1031 *committed = 0;
1032
1031 /* 1033 /*
1032 * Ensure that the inode is always logged. 1034 * Ensure that the inode is always logged.
1033 */ 1035 */
@@ -1082,6 +1084,6 @@ xfs_trans_roll(
1082 struct xfs_trans **tpp, 1084 struct xfs_trans **tpp,
1083 struct xfs_inode *dp) 1085 struct xfs_inode *dp)
1084{ 1086{
1085 int committed = 0; 1087 int committed;
1086 return __xfs_trans_roll(tpp, dp, &committed); 1088 return __xfs_trans_roll(tpp, dp, &committed);
1087} 1089}