mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 00:28:52 +02:00 
			
		
		
		
	kexec: fix Oops in crash_shrink_memory()
When crashkernel is not enabled, "echo 0 > /sys/kernel/kexec_crash_size" OOPSes the kernel in crash_shrink_memory. This happens when crash_shrink_memory tries to release the 'crashk_res' resource which are not reserved. Also value of "/sys/kernel/kexec_crash_size" shows as 1, which should be 0. This patch fixes the OOPS in crash_shrink_memory and shows "/sys/kernel/kexec_crash_size" as 0 when crash kernel memory is not reserved. Signed-off-by: Pavan Naregundi <pavan@linux.vnet.ibm.com> Reviewed-by: WANG Cong <xiyou.wangcong@gmail.com> Cc: Simon Horman <horms@verge.net.au> Cc: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									482ce512c5
								
							
						
					
					
						commit
						e05bd3367b
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		|  | @ -1089,9 +1089,10 @@ void crash_kexec(struct pt_regs *regs) | |||
| 
 | ||||
| size_t crash_get_memory_size(void) | ||||
| { | ||||
| 	size_t size; | ||||
| 	size_t size = 0; | ||||
| 	mutex_lock(&kexec_mutex); | ||||
| 	size = crashk_res.end - crashk_res.start + 1; | ||||
| 	if (crashk_res.end != crashk_res.start) | ||||
| 		size = crashk_res.end - crashk_res.start + 1; | ||||
| 	mutex_unlock(&kexec_mutex); | ||||
| 	return size; | ||||
| } | ||||
|  | @ -1134,7 +1135,7 @@ int crash_shrink_memory(unsigned long new_size) | |||
| 
 | ||||
| 	free_reserved_phys_range(end, crashk_res.end); | ||||
| 
 | ||||
| 	if (start == end) | ||||
| 	if ((start == end) && (crashk_res.parent != NULL)) | ||||
| 		release_resource(&crashk_res); | ||||
| 	crashk_res.end = end - 1; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Pavan Naregundi
						Pavan Naregundi