public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] xfs: avoid double-free in xfs_attr_node_addname
@ 2013-08-01  1:18 Eric Sandeen
  2013-08-01 14:18 ` Mark Tinguely
  2013-08-13 21:34 ` Ben Myers
  0 siblings, 2 replies; 3+ messages in thread
From: Eric Sandeen @ 2013-08-01  1:18 UTC (permalink / raw)
  To: 'linux-xfs@oss.sgi.com'

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>
---

Note: Exact same patch should hit xfsprogs - I could send another,
or maybe SGI can just apply it in both trees?

Thanks,
-Eric

diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c
index 20fe3fe..aaff8a9 100644
--- a/fs/xfs/xfs_attr.c
+++ b/fs/xfs/xfs_attr.c
@@ -1260,6 +1260,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) {

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] xfs: avoid double-free in xfs_attr_node_addname
  2013-08-01  1:18 [PATCH] xfs: avoid double-free in xfs_attr_node_addname Eric Sandeen
@ 2013-08-01 14:18 ` Mark Tinguely
  2013-08-13 21:34 ` Ben Myers
  1 sibling, 0 replies; 3+ messages in thread
From: Mark Tinguely @ 2013-08-01 14:18 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: 'linux-xfs@oss.sgi.com'

On 07/31/13 20:18, Eric Sandeen wrote:
> 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>
> ---
>
> Note: Exact same patch should hit xfsprogs - I could send another,
> or maybe SGI can just apply it in both trees?
>
> Thanks,
> -Eric

Looks good. we will discuss the details at PM phone call.

Reviewed-by: Mark Tinguely <tinguely@sgi.com>

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] xfs: avoid double-free in xfs_attr_node_addname
  2013-08-01  1:18 [PATCH] xfs: avoid double-free in xfs_attr_node_addname Eric Sandeen
  2013-08-01 14:18 ` Mark Tinguely
@ 2013-08-13 21:34 ` Ben Myers
  1 sibling, 0 replies; 3+ messages in thread
From: Ben Myers @ 2013-08-13 21:34 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: 'linux-xfs@oss.sgi.com'

On Wed, Jul 31, 2013 at 08:18:54PM -0500, Eric Sandeen wrote:
> 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>

Applied.

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-08-13 21:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-01  1:18 [PATCH] xfs: avoid double-free in xfs_attr_node_addname Eric Sandeen
2013-08-01 14:18 ` Mark Tinguely
2013-08-13 21:34 ` Ben Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox