diff options
author | Eric Sandeen <sandeen@redhat.com> | 2016-03-14 20:42:47 -0400 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2016-03-14 20:42:47 -0400 |
commit | cc07eed8336d6452214d13e0cba770a0f5296a7f (patch) | |
tree | c480a343183a036e4c46b02b8e4714f5aea0d9b5 /fs/xfs/xfs_trans.c | |
parent | d34999c97ae87cd56514b8cbc6269651efe274fe (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.c | 4 |
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 | } |