• Pasha Tatashin's avatar
    fs/kernel_read_file: allow to read files up-to ssize_t · dabba872
    Pasha Tatashin authored
    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.comSigned-off-by: default avatarPasha 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: default avatarAndrew Morton <akpm@linux-foundation.org>
    dabba872
kernel_read_file.c 4.39 KB