diff options
author | Zhang Yanfei <[email protected]> | 2013-02-27 17:03:31 -0800 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2013-02-27 19:10:12 -0800 |
commit | 8c333ac2e4946a673b54f974d75397c947569c29 (patch) | |
tree | 30ff21ecad4f62726ac2a90dbb9cc6e60a5b9b95 | |
parent | b92e7e0daed31389ff5ad9f558ef1284c846f6ee (diff) |
kexec: avoid freeing NULL pointer in image_crash_alloc()
Though there is no error if we free a NULL pointer, I think we could
avoid this behaviour. Change the code a little in kimage_crash_alloc()
could avoid this kind of unnecessary free.
Signed-off-by: Zhang Yanfei <[email protected]>
Cc: "Eric W. Biederman" <[email protected]>
Cc: Sasha Levin <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r-- | kernel/kexec.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/kernel/kexec.c b/kernel/kexec.c index 6b7455e3c96b..bddd3d7a74b6 100644 --- a/kernel/kexec.c +++ b/kernel/kexec.c @@ -316,7 +316,7 @@ static int kimage_crash_alloc(struct kimage **rimage, unsigned long entry, mend = mstart + image->segment[i].memsz - 1; /* Ensure we are within the crash kernel limits */ if ((mstart < crashk_res.start) || (mend > crashk_res.end)) - goto out; + goto out_free; } /* @@ -329,16 +329,15 @@ static int kimage_crash_alloc(struct kimage **rimage, unsigned long entry, get_order(KEXEC_CONTROL_PAGE_SIZE)); if (!image->control_code_page) { printk(KERN_ERR "Could not allocate control_code_buffer\n"); - goto out; + goto out_free; } - result = 0; -out: - if (result == 0) - *rimage = image; - else - kfree(image); + *rimage = image; + return 0; +out_free: + kfree(image); +out: return result; } |