summaryrefslogtreecommitdiffstats
path: root/Kconfig
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@sandeen.net>2016-01-11 01:34:01 +0100
committerDave Chinner <david@fromorbit.com>2016-01-11 01:34:01 +0100
commitf6106efae5f4144b32f6c10de0dc3e7efc9181e3 (patch)
tree15d2a875d0e9bf02cf4b10488c249fa71c24b9b4 /Kconfig
parentxfs: bmapbt checking on debug kernels too expensive (diff)
downloadlinux-f6106efae5f4144b32f6c10de0dc3e7efc9181e3.tar.xz
linux-f6106efae5f4144b32f6c10de0dc3e7efc9181e3.zip
xfs: eliminate committed arg from xfs_bmap_finish
Calls to xfs_bmap_finish() and xfs_trans_ijoin(), and the associated comments were replicated several times across the attribute code, all dealing with what to do if the transaction was or wasn't committed. And in that replicated code, an ASSERT() test of an uninitialized variable occurs in several locations: error = xfs_attr_thing(&args); if (!error) { error = xfs_bmap_finish(&args.trans, args.flist, &committed); } if (error) { ASSERT(committed); If the first xfs_attr_thing() failed, we'd skip the xfs_bmap_finish, never set "committed", and then test it in the ASSERT. Fix this up by moving the committed state internal to xfs_bmap_finish, and add a new inode argument. If an inode is passed in, it is passed through to __xfs_trans_roll() and joined to the transaction there if the transaction was committed. xfs_qm_dqalloc() was a little unique in that it called bjoin rather than ijoin, but as Dave points out we can detect the committed state but checking whether (*tpp != tp). Addresses-Coverity-Id: 102360 Addresses-Coverity-Id: 102361 Addresses-Coverity-Id: 102363 Addresses-Coverity-Id: 102364 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 'Kconfig')
0 files changed, 0 insertions, 0 deletions