diff options
author | Eric Sandeen <sandeen@redhat.com> | 2013-08-01 03:18:54 +0200 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2013-08-13 22:48:01 +0200 |
commit | 6dd93e9e5eb19e81a74b3df8426a945a08ad8a1f (patch) | |
tree | 75ff24b7d369bacc7d15be86338badb37da5f07a /fs/xfs/xfs_attr.c | |
parent | xfs: call roundup_64() to calculate the min_logblks (diff) | |
download | linux-6dd93e9e5eb19e81a74b3df8426a945a08ad8a1f.tar.xz linux-6dd93e9e5eb19e81a74b3df8426a945a08ad8a1f.zip |
xfs: avoid double-free in xfs_attr_node_addname
xfs_attr_node_addname()'s error handling tests whether it
should free "state" in the out: error handling label:
out:
if (state)
xfs_da_state_free(state);
but an earlier free doesn't set state to NULL afterwards; this
could lead to a double free. Fix it by setting state to NULL
after it's freed.
This was found by Coverity.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_attr.c')
-rw-r--r-- | fs/xfs/xfs_attr.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index 176dbb66282d..ddcf2267ffa6 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c @@ -1014,6 +1014,7 @@ restart: * have been a b-tree. */ xfs_da_state_free(state); + state = NULL; xfs_bmap_init(args->flist, args->firstblock); error = xfs_attr3_leaf_to_node(args); if (!error) { |