Messages in this thread Patch in this message | | | Date | Fri, 2 Apr 2010 14:47:13 +0200 (CEST) | From | Julia Lawall <> | Subject | [PATCH 1/3] arch/powerpc/platforms: Eliminate use after free |
| |
From: Julia Lawall <julia@diku.dk>
dlpar_free_cc_nodes frees its argument, so dlpar_online_cpu should not be called on the same value. Skip over the call to dlpar_online_cpu by jumping directly to out.
A simplified version of the semantic patch that finds this problem is as follows: (http://coccinelle.lip6.fr/)
// <smpl> @@ expression E,E2; @@
dlpar_free_cc_nodes(E) ... ( E = E2 | * E ) // </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
--- arch/powerpc/platforms/pseries/dlpar.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c index e1682bc..1540a41 100644 --- a/arch/powerpc/platforms/pseries/dlpar.c +++ b/arch/powerpc/platforms/pseries/dlpar.c @@ -433,6 +433,7 @@ static ssize_t dlpar_cpu_probe(const char *buf, size_t count) if (rc) { dlpar_release_drc(drc_index); dlpar_free_cc_nodes(dn); + goto out; } rc = dlpar_online_cpu(dn);
| |