Nikolay-Boriso…
Commits on Jun 26, 2018
-
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 authored and 0day robot committedJun 26, 2018 -
Add linux-next specific files for 20180626
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
sfrothwell committedJun 26, 2018 -
sfrothwell committed
Jun 26, 2018 -
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>
-
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> -
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>
-
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>
-
Merge branch 'akpm-current/current'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'fsi/master'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'xarray/xarray'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'kspp/for-next/kspp'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'ntb/ntb-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'nvdimm/libnvdimm-for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'rtc/rtc-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'coresight/next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'livepatching/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'random/dev'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'userns/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'pinctrl/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'gpio/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'libata/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'scsi-mkp/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'scsi/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'slave-dma/next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'mux/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'staging/staging-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'extcon/extcon-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'usb-chipidea-next/ci-for-usb-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'usb-serial/usb-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'usb/usb-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'ipmi/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'leds/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'chrome-platform/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'drivers-x86/for-next'
sfrothwell committedJun 26, 2018 -
Merge remote-tracking branch 'rcu/rcu/next'
sfrothwell committedJun 26, 2018