x86, mce, AMD: Fix leaving freed data in a list
commitec03ea41ad7c4a453486eefd71c7a7fda43d52f9
authorJulia Lawall <julia@diku.dk>
Fri, 13 May 2011 13:52:09 +0000 (13 15:52 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 21 May 2011 22:13:32 +0000 (21 15:13 -0700)
tree0d46c5ea13f60396e70f54129b4aeb2fa4074bac
parent9af9f92080401b2f68e88ef2df266f2eaeca73e0
x86, mce, AMD: Fix leaving freed data in a list

commit d9a5ac9ef306eb5cc874f285185a15c303c50009 upstream.

b may be added to a list, but is not removed before being freed
in the case of an error.  This is done in the corresponding
deallocation function, so the code here has been changed to
follow that.

The sematic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@
expression E,E1,E2;
identifier l;
@@

*list_add(&E->l,E1);
... when != E1
    when != list_del(&E->l)
    when != list_del_init(&E->l)
    when != E = E2
*kfree(E);// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Cc: Borislav Petkov <borislav.petkov@amd.com>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Andreas Herrmann <andreas.herrmann3@amd.com>
Link: http://lkml.kernel.org/r/1305294731-12127-1-git-send-email-julia@diku.dk
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/kernel/cpu/mcheck/mce_amd.c