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

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

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 <dan.carpenter@oracle.com>
Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent d34999c9
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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);
}