diff options
| -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 6b7455e3c96..bddd3d7a74b 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;  }  |