aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhang Yanfei <zhangyanfei@cn.fujitsu.com>2013-02-27 20:03:31 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-27 22:10:12 -0500
commit8c333ac2e4946a673b54f974d75397c947569c29 (patch)
tree30ff21ecad4f62726ac2a90dbb9cc6e60a5b9b95
parentb92e7e0daed31389ff5ad9f558ef1284c846f6ee (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 <zhangyanfei@cn.fujitsu.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Sasha Levin <sasha.levin@oracle.com> Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--kernel/kexec.c15
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,
316 mend = mstart + image->segment[i].memsz - 1; 316 mend = mstart + image->segment[i].memsz - 1;
317 /* Ensure we are within the crash kernel limits */ 317 /* Ensure we are within the crash kernel limits */
318 if ((mstart < crashk_res.start) || (mend > crashk_res.end)) 318 if ((mstart < crashk_res.start) || (mend > crashk_res.end))
319 goto out; 319 goto out_free;
320 } 320 }
321 321
322 /* 322 /*
@@ -329,16 +329,15 @@ static int kimage_crash_alloc(struct kimage **rimage, unsigned long entry,
329 get_order(KEXEC_CONTROL_PAGE_SIZE)); 329 get_order(KEXEC_CONTROL_PAGE_SIZE));
330 if (!image->control_code_page) { 330 if (!image->control_code_page) {
331 printk(KERN_ERR "Could not allocate control_code_buffer\n"); 331 printk(KERN_ERR "Could not allocate control_code_buffer\n");
332 goto out; 332 goto out_free;
333 } 333 }
334 334
335 result = 0; 335 *rimage = image;
336out: 336 return 0;
337 if (result == 0)
338 *rimage = image;
339 else
340 kfree(image);
341 337
338out_free:
339 kfree(image);
340out:
342 return result; 341 return result;
343} 342}
344 343