x86, mce, AMD: Fix leaving freed data in a list
commit4bd18f8871403ca2782204fcd4568f45306d0bc4
authorJulia Lawall <julia@diku.dk>
Fri, 13 May 2011 13:52:09 +0000 (13 15:52 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 23 May 2011 18:23:02 +0000 (23 11:23 -0700)
treee8af39d32c21a5dc844b9631c0a5edad81f93c86
parent6470008954c328c12f7bdf5ee5b87257cb5fdafd
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