forked from mirrors/linux
		
	 dabba87229
			
		
	
	
		dabba87229
		
	
	
	
	
		
			
			Patch series "Allow to kexec with initramfs larger than 2G", v2. Currently, the largest initramfs that is supported by kexec_file_load() syscall is 2G. This is because kernel_read_file() returns int, and is limited to INT_MAX or 2G. On the other hand, there are kexec based boot loaders (i.e. u-root), that may need to boot netboot images that might be larger than 2G. The first patch changes the return type from int to ssize_t in kernel_read_file* functions. The second patch increases the maximum initramfs file size to 4G. Tested: verified that can kexec_file_load() works with 4G initramfs on x86_64. This patch (of 2): Currently, the maximum file size that is supported is 2G. This may be too small in some cases. For example, kexec_file_load() system call loads initramfs. In some netboot cases initramfs can be rather large. Allow to use up-to ssize_t bytes. The callers still can limit the maximum file size via buf_size. Link: https://lkml.kernel.org/r/20220527025535.3953665-1-pasha.tatashin@soleen.com Link: https://lkml.kernel.org/r/20220527025535.3953665-2-pasha.tatashin@soleen.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Baoquan He <bhe@redhat.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Greg Thelen <gthelen@google.com> Cc: Sasha Levin <sashal@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			760 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			760 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _LINUX_LIMITS_H
 | |
| #define _LINUX_LIMITS_H
 | |
| 
 | |
| #include <uapi/linux/limits.h>
 | |
| #include <linux/types.h>
 | |
| #include <vdso/limits.h>
 | |
| 
 | |
| #define SIZE_MAX	(~(size_t)0)
 | |
| #define SSIZE_MAX	((ssize_t)(SIZE_MAX >> 1))
 | |
| #define PHYS_ADDR_MAX	(~(phys_addr_t)0)
 | |
| 
 | |
| #define U8_MAX		((u8)~0U)
 | |
| #define S8_MAX		((s8)(U8_MAX >> 1))
 | |
| #define S8_MIN		((s8)(-S8_MAX - 1))
 | |
| #define U16_MAX		((u16)~0U)
 | |
| #define S16_MAX		((s16)(U16_MAX >> 1))
 | |
| #define S16_MIN		((s16)(-S16_MAX - 1))
 | |
| #define U32_MAX		((u32)~0U)
 | |
| #define U32_MIN		((u32)0)
 | |
| #define S32_MAX		((s32)(U32_MAX >> 1))
 | |
| #define S32_MIN		((s32)(-S32_MAX - 1))
 | |
| #define U64_MAX		((u64)~0ULL)
 | |
| #define S64_MAX		((s64)(U64_MAX >> 1))
 | |
| #define S64_MIN		((s64)(-S64_MAX - 1))
 | |
| 
 | |
| #endif /* _LINUX_LIMITS_H */
 |