Commit cc07eed8 authored by Eric Sandeen's avatar Eric Sandeen Committed by Dave Chinner

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: default avatarDan Carpenter <>
Signed-off-by: default avatarEric Sandeen <>
Reviewed-by: default avatarChristoph Hellwig <>
Signed-off-by: default avatarDave Chinner <>
parent d34999c9
...@@ -1028,6 +1028,8 @@ __xfs_trans_roll( ...@@ -1028,6 +1028,8 @@ __xfs_trans_roll(
struct xfs_trans_res tres; struct xfs_trans_res tres;
int error; int error;
*committed = 0;
/* /*
* Ensure that the inode is always logged. * Ensure that the inode is always logged.
*/ */
...@@ -1082,6 +1084,6 @@ xfs_trans_roll( ...@@ -1082,6 +1084,6 @@ xfs_trans_roll(
struct xfs_trans **tpp, struct xfs_trans **tpp,
struct xfs_inode *dp) struct xfs_inode *dp)
{ {
int committed = 0; int committed;
return __xfs_trans_roll(tpp, dp, &committed); return __xfs_trans_roll(tpp, dp, &committed);
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment