mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-10 07:50:04 +00:00
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>
28 lines
760 B
C
28 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 */
|