Skip to content
Permalink
Nikolay-Boriso…

Commits on Jun 26, 2018

  1. btrfs: Add graceful handling of V0 extents

    Following the removal of the v0 handling code let's be courteous and
    print an error message when such extents are handled. In the cases
    where we have a transaction just abort it, otherwise just call
    btrfs_handle_fs_error. Both cases result in the FS being re-mounted RO.
    
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Nikolay Borisov 0day robot
    Nikolay Borisov authored and 0day robot committed Jun 26, 2018
  2. Add linux-next specific files for 20180626

    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    sfrothwell committed Jun 26, 2018
  3. Merge branch 'akpm/master'

    sfrothwell committed Jun 26, 2018
  4. sparc64: NG4 memset 32 bits overflow

    Early in boot Linux patches memset and memcpy to branch to platform
    optimized versions of these routines.  The NG4 (Niagra 4) versions are
    currently used on all platforms starting from T4.  Recently, there were M7
    optimized routines added into UEK4 but not into mainline yet.  So, even
    with M7 optimized routines NG4 are still going to be used on T4, T5, M5,
    and M6 processors.
    
    While investigating how to improve initialization time of dentry_hashtable
    which is 8G long on M6 ldom with 7T of main memory, I noticed that
    memset() does not reset all the memory in this array, after studying the
    code, I realized that NG4memset() branches use %icc register instead of
    %xcc to check compare, so if value of length is over 32-bit long, which is
    true for 8G array, these routines fail to work properly.
    
    The fix is to replace all %icc with %xcc in these routines.  (Alternative
    is to use %ncc, but this is misleading, as the code already has sparcv9
    only instructions, and cannot be compiled on 32-bit).
    
    This is important to fix this bug, because even older T4-4 can have 2T of
    memory, and there are large memory proportional data structures in kernel
    which can be larger than 4G in size.  The failing of memset() is silent
    and corruption is hard to detect.
    
    Link: http://lkml.kernel.org/r/1488432825-92126-2-git-send-email-pasha.tatashin@oracle.com
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Reviewed-by: Babu Moger <babu.moger@oracle.com>
    Cc: Babu Moger <babu.moger@amd.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Pavel Tatashin authored and sfrothwell committed Jun 26, 2018
  5. drivers/media/platform/sti/delta/delta-ipc.c: fix read buffer overflow

    The single caller passes a string to delta_ipc_open, which copies with a
    fixed size larger than the string.  So it copies some random data after
    the original string the ro segment.
    
    If the string was at the end of a page it may fault.
    
    Just copy the string with a normal strcpy after clearing the field.
    
    Found by a LTO build (which errors out)
    because the compiler inlines the functions and can resolve
    the string sizes and triggers the compile time checks in memcpy.
    
    In function `memcpy',
        inlined from `delta_ipc_open.constprop' at linux/drivers/media/platform/sti/delta/delta-ipc.c:178:0,
        inlined from `delta_mjpeg_ipc_open' at linux/drivers/media/platform/sti/delta/delta-mjpeg-dec.c:227:0,
        inlined from `delta_mjpeg_decode' at linux/drivers/media/platform/sti/delta/delta-mjpeg-dec.c:403:0:
    /home/andi/lsrc/linux/include/linux/string.h:337:0: error: call to `__read_overflow2' declared with attribute error: detected read beyond size of object passed as 2nd parameter
        __read_overflow2();
    
    Link: http://lkml.kernel.org/r/20171222001212.1850-1-andi@firstfloor.org
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Cc: Hugues FRUCHET <hugues.fruchet@st.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Andi Kleen authored and sfrothwell committed Jun 26, 2018
  6. kernel/kexec_file.c: load kernel at top of system RAM if required

    For kexec_file loading, if kexec_buf.top_down is 'true', the memory which
    is used to load kernel/initrd/purgatory is supposed to be allocated from
    top to down.  This is also consistent with the old kexec loading
    interface.
    
    However, the current arch_kexec_walk_mem() doesn't do like this.  It
    ignores checking kexec_buf.top_down, but calls walk_system_ram_res()
    directly to go through all resources of System RAM, to try to find a
    memory region which can contain the specific kexec buffer, then calls
    locate_mem_hole_callback() to allocate memory in that found memory region
    from top to down.  This is not right.
    
    Here add checking if kexec_buf.top_down is 'true' in
    arch_kexec_walk_mem(), if yes, call the newly added
    walk_system_ram_res_rev() to find memory region from top to down to load
    kernel.
    
    The problem is the current kexec file loading has different behaviour with
    the old kexec loading.  In kexec loading, user space kexec_tools utility
    does most of job, it searches in /proc/iomem to try to find a memory
    region from top to down to load kernel.  Therefore with the kexec loading,
    x86_64 bzImage kernel are all loaded at top of System RAM.  However, the
    kexec file loading just searches for available memory region in iomem
    resource from bottom to top, then try to allocate from top to down in that
    region.  E.g on my testing system with 2G memory as below, the kexec
    loading will put kernel near 0x000000013fffffff, while kexec file loading
    will put kernel near 0x000000003ffddfff.  There's no bug reported yet,
    just we need consider it when take care of the kexec collaboration with
    other kernel components like kaslr/hotplug etc, and also the
    consistentency between the different kexec interface.
    
    [Mar23 15:13] Linux version 4.16.0-rc3+ (bhe@localhost.localdomain) (gcc version
    [  +0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.16.0-rc3+ root=UUID=be8f8e3a-9
    [  +0.000000] x86/fpu: x87 FPU will use FXSAVE
    [  +0.000000] e820: BIOS-provided physical RAM map:
    [  +0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
    [  +0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
    [  +0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
    [  +0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003ffddfff] usable
    [  +0.000000] BIOS-e820: [mem 0x000000003ffde000-0x000000003fffffff] reserved
    [  +0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
    [  +0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
    [  +0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000013fffffff] usable
    
    I searched on internet and found the original patches posted for adding
    bzImage 64 support into the old kexec loading, which is located in user
    space kexec_tools utility made by Yinghai, and Vivek and hpa reviewed
    patches.  Still I didn't found out why kernel has to be put at top of
    system RAM.  I guess low memory are reserved for system usage mostly,
    putting kexec kernel at top is safer and no need to exclude those
    resereved regions by system or firmware which we may not find out all of
    them, but not very sure about it.
    
    Link: http://lkml.kernel.org/r/20180322033722.9279-3-bhe@redhat.com
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Philipp Rudo <prudo@linux.vnet.ibm.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Baoquan He authored and sfrothwell committed Jun 26, 2018
  7. kernel/kexec_file.c: add walk_system_ram_res_rev()

    This function, being a variant of walk_system_ram_res() introduced in
    commit 8c86e70 ("resource: provide new functions to walk through
    resources"), walks through a list of all the resources of System RAM in
    reversed order, i.e., from higher to lower.
    
    It will be used in kexec_file code.
    
    Link: http://lkml.kernel.org/r/20180322033722.9279-2-bhe@redhat.com
    Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Philipp Rudo <prudo@linux.vnet.ibm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
    t-akashi authored and sfrothwell committed Jun 26, 2018
Older
You can’t perform that action at this time.