Skip to content
  1. Jan 06, 2019
    • Olof Johansson's avatar
      lib/genalloc.c: include vmalloc.h · 35004f2e
      Olof Johansson authored
      Fixes build break on most ARM/ARM64 defconfigs:
      
        lib/genalloc.c: In function 'gen_pool_add_virt':
        lib/genalloc.c:190:10: error: implicit declaration of function 'vzalloc_node'; did you mean 'kzalloc_node'?
        lib/genalloc.c:190:8: warning: assignment to 'struct gen_pool_chunk *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
        lib/genalloc.c: In function 'gen_pool_destroy':
        lib/genalloc.c:254:3: error: implicit declaration of function 'vfree'; did you mean 'kfree'?
      
      Fixes: 6862d2fc
      
       ('lib/genalloc.c: use vzalloc_node() to allocate the bitmap')
      Cc: Huang Shijie <sjhuang@iluvatar.ai>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Alexey Skidanov <alexey.skidanov@intel.com>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      35004f2e
    • Linus Torvalds's avatar
      Merge branch 'mount.part1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 505b050f
      Linus Torvalds authored
      Pull vfs mount API prep from Al Viro:
       "Mount API prereqs.
      
        Mostly that's LSM mount options cleanups. There are several minor
        fixes in there, but nothing earth-shattering (leaks on failure exits,
        mostly)"
      
      * 'mount.part1' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (27 commits)
        mount_fs: suppress MAC on MS_SUBMOUNT as well as MS_KERNMOUNT
        smack: rewrite smack_sb_eat_lsm_opts()
        smack: get rid of match_token()
        smack: take the guts of smack_parse_opts_str() into a new helper
        LSM: new method: ->sb_add_mnt_opt()
        selinux: rewrite selinux_sb_eat_lsm_opts()
        selinux: regularize Opt_... names a bit
        selinux: switch away from match_token()
        selinux: new helper - selinux_add_opt()
        LSM: bury struct security_mnt_opts
        smack: switch to private smack_mnt_opts
        selinux: switch to private struct selinux_mnt_opts
        LSM: hide struct security_mnt_opts from any generic code
        selinux: kill selinux_sb_get_mnt_opts()
        LSM: turn sb_eat_lsm_opts() into a method
        nfs_remount(): don't leak, don't ignore LSM options quietly
        btrfs: sanitize security_mnt_opts use
        selinux; don't open-code a loop in sb_finish_set_opts()
        LSM: split ->sb_set_mnt_opts() out of ->sb_kern_mount()
        new helper: security_sb_eat_lsm_opts()
        ...
      505b050f
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 9b286efe
      Linus Torvalds authored
      Pull trivial vfs updates from Al Viro:
       "A few cleanups + Neil's namespace_unlock() optimization"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        exec: make prepare_bprm_creds static
        genheaders: %-<width>s had been there since v6; %-*s - since v7
        VFS: use synchronize_rcu_expedited() in namespace_unlock()
        iov_iter: reduce code duplication
      9b286efe
    • Linus Torvalds's avatar
      Merge tag 'mips_fixes_4.21_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · 47f3f4eb
      Linus Torvalds authored
      Pull MIPS fixes from Paul Burton:
       "A few early MIPS fixes for 4.21:
      
         - The Broadcom BCM63xx platform sees a fix for resetting the BCM6368
           ethernet switch, and the removal of a platform device we've never
           had a driver for.
      
         - The Alchemy platform sees a few fixes for bitrot that occurred
           within the past few cycles.
      
         - We now enable vectored interrupt support for the MediaTek MT7620
           SoC, which makes sense since they're supported by the SoC but in
           this case also works around a bug relating to the location of
           exception vectors when using a recent version of U-Boot.
      
         - The atomic64_fetch_*_relaxed() family of functions see a fix for a
           regression in MIPS64 kernels since v4.19.
      
         - Cavium Octeon III CN7xxx systems will now disable their RGMII
           interfaces rather than attempt to enable them & warn about the lack
           of support for doing so, as they did since initial CN7xxx ethernet
           support was added in v4.7.
      
         - The Microsemi/Microchip MSCC SoCs gain a MAINTAINERS entry.
      
         - .mailmap now provides consistency for Dengcheng Zhu's name &
           current email address"
      
      * tag 'mips_fixes_4.21_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
        MIPS: OCTEON: mark RGMII interface disabled on OCTEON III
        MIPS: Fix a R10000_LLSC_WAR logic in atomic.h
        MIPS: BCM63XX: drop unused and broken DSP platform device
        mailmap: Update name spelling and email for Dengcheng Zhu
        MIPS: ralink: Select CONFIG_CPU_MIPSR2_IRQ_VI on MT7620/8
        MAINTAINERS: Add a maintainer for MSCC MIPS SoCs
        MIPS: Alchemy: update dma masks for devboard devices
        MIPS: Alchemy: update cpu-feature-overrides
        MIPS: Alchemy: drop DB1000 IrDA support bits
        MIPS: alchemy: cpu_all_mask is forbidden for clock event devices
        MIPS: BCM63XX: fix switch core reset on BCM6368
      47f3f4eb
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.21-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · f1c2f885
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
       "A fix for the recent access_ok() change, which broke the build. We
        recently added a use of type in order to squash a warning elsewhere
        about type being unused.
      
        A handful of other minor build fixes, and one defconfig update.
      
        Thanks to: Christian Lamparter, Christophe Leroy, Diana Craciun,
        Mathieu Malaterre"
      
      * tag 'powerpc-4.21-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc: Drop use of 'type' from access_ok()
        KVM: PPC: Book3S HV: radix: Fix uninitialized var build error
        powerpc/configs: Add PPC4xx_OCM to ppc40x_defconfig
        powerpc/4xx/ocm: Fix phys_addr_t printf warnings
        powerpc/4xx/ocm: Fix compilation error due to PAGE_KERNEL usage
        powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup'
      f1c2f885
    • Linus Torvalds's avatar
      Merge branch 'parisc-4.21-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · cd08f68c
      Linus Torvalds authored
      Pull parisc fix from Helge Deller:
       "Fix boot issues with a series of parisc servers since kernel 4.20.
      
        Remapping kernel text with set_kernel_text_rw() missed to remap from
        lowest up until the highest huge-page aligned kernel text addresss"
      
      * 'parisc-4.21-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Remap hugepage-aligned pages in set_kernel_text_rw()
      cd08f68c
    • Linus Torvalds's avatar
      Merge tag 'for-4.21' of git://git.sourceforge.jp/gitroot/uclinux-h8/linux · 670b321f
      Linus Torvalds authored
      Pull h8300 fix from Yoshinori Sato:
       "Build problem fix"
      
      * tag 'for-4.21' of git://git.sourceforge.jp/gitroot/uclinux-h8/linux:
        h8300: pci: Remove local declaration of pcibios_penalize_isa_irq
      670b321f
    • Linus Torvalds's avatar
      Merge tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · b23b0ea3
      Linus Torvalds authored
      Pull more ARM SoC updates from Olof Johansson:
       "A few updates that we merged late but are low risk for regressions for
        other platforms (and a few other straggling patches):
      
         - I mis-tagged the 'drivers' branch, and missed 3 patches. Merged in
           here. They're for a driver for the PL353 SRAM controller and a
           build fix for the qualcomm scm driver.
      
         - A new platform, RDA Micro RDA8810PL (Cortex-A5 w/ integrated
           Vivante GPU, 256MB RAM, Wifi). This includes some acked
           platform-specific drivers (serial, etc). This also include DTs for
           two boards with this SoC, OrangePi 2G and OrangePi i86.
      
         - i.MX8 is another new platform (NXP, 4x Cortex-A53 + Cortex-M4, 4K
           video playback offload). This is the first i.MX 64-bit SoC.
      
         - Some minor updates to Samsung boards (adding a few peripherals in
           DTs).
      
         - Small rework for SMP bootup on STi platforms.
      
         - A couple of TEE driver fixes.
      
         - A couple of new config options (bcm2835 thermal, Uniphier MDMAC)
           enabled in defconfigs"
      
      * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (27 commits)
        ARM: multi_v7_defconfig: enable CONFIG_UNIPHIER_MDMAC
        arm64: defconfig: Re-enable bcm2835-thermal driver
        MAINTAINERS: Add entry for RDA Micro SoC architecture
        tty: serial: Add RDA8810PL UART driver
        ARM: dts: rda8810pl: Add interrupt support for UART
        dt-bindings: serial: Document RDA Micro UART
        ARM: dts: rda8810pl: Add timer support
        ARM: dts: Add devicetree for OrangePi i96 board
        ARM: dts: Add devicetree for OrangePi 2G IoT board
        ARM: dts: Add devicetree for RDA8810PL SoC
        ARM: Prepare RDA8810PL SoC
        dt-bindings: arm: Document RDA8810PL and reference boards
        dt-bindings: Add RDA Micro vendor prefix
        ARM: sti: remove pen_release and boot_lock
        arm64: dts: exynos: Add Bluetooth chip to TM2(e) boards
        arm64: dts: imx8mq-evk: enable watchdog
        arm64: dts: imx8mq: add watchdog devices
        MAINTAINERS: add i.MX8 DT path to i.MX architecture
        arm64: add support for i.MX8M EVK board
        arm64: add basic DTS for i.MX8MQ
        ...
      b23b0ea3
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 078a5a4f
      Linus Torvalds authored
      Pull arm64 fixes from Will Deacon:
       "I'm safely chained back up to my desk, so please pull these arm64
        fixes for -rc1 that address some issues that cropped up during the
        merge window:
      
         - Prevent KASLR from mapping the top page of the virtual address
           space
      
         - Fix device-tree probing of SDEI driver
      
         - Fix incorrect register offset definition in Hisilicon DDRC PMU
           driver
      
         - Fix compilation issue with older binutils not liking unsigned
           immediates
      
         - Fix uapi headers so that libc can provide its own sigcontext
           definition
      
         - Fix handling of private compat syscalls
      
         - Hook up compat io_pgetevents() syscall for 32-bit tasks
      
         - Cleanup to arm64 Makefile (including now to avoid silly conflicts)"
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: compat: Hook up io_pgetevents() for 32-bit tasks
        arm64: compat: Don't pull syscall number from regs in arm_compat_syscall
        arm64: compat: Avoid sending SIGILL for unallocated syscall numbers
        arm64/sve: Disentangle <uapi/asm/ptrace.h> from <uapi/asm/sigcontext.h>
        arm64/sve: ptrace: Fix SVE_PT_REGS_OFFSET definition
        drivers/perf: hisi: Fixup one DDRC PMU register offset
        arm64: replace arm64-obj-* in Makefile with obj-*
        arm64: kaslr: Reserve size of ARM64_MEMSTART_ALIGN in linear region
        firmware: arm_sdei: Fix DT platform device creation
        firmware: arm_sdei: fix wrong of_node_put() in init function
        arm64: entry: remove unused register aliases
        arm64: smp: Fix compilation error
      078a5a4f
    • Linus Torvalds's avatar
      Merge tag 'for-4.21' of git://git.armlinux.org.uk/~rmk/linux-arm · 1205b623
      Linus Torvalds authored
      Pull ARM updates from Russell King:
       "Included in this update:
      
         - Florian Fainelli noticed that userspace segfaults caused by the
           lack of kernel-userspace helpers was hard to diagnose; we now issue
           a warning when userspace tries to use the helpers but the kernel
           has them disabled.
      
         - Ben Dooks wants compatibility for the old ATAG serial number with
           DT systems.
      
         - Some cleanup of assembly by Nicolas Pitre.
      
         - User accessors optimisation from Vincent Whitchurch.
      
         - More robust kdump on SMP systems from Yufen Wang.
      
         - Sebastian Andrzej Siewior noticed problems with the SMP "boot_lock"
           on RT kernels, and so we convert the Versatile series of platforms
           to use a raw spinlock instead, consolidating the Versatile
           implementation. We entirely remove the boot_lock on OMAP systems,
           where it's unnecessary. Further patches for other systems will be
           submitted for the following merge window.
      
         - Start switching old StrongARM-11x0 systems to use gpiolib rather
           than their private GPIO implementation - mostly PCMCIA bits.
      
         - ARM Kconfig cleanups.
      
         - Cleanup a mostly harmless mistake in the recent Spectre patch in
           4.20 (which had the effect that data that can be placed into the
           init sections was incorrectly always placed in the rodata section)"
      
      * tag 'for-4.21' of git://git.armlinux.org.uk/~rmk/linux-arm: (25 commits)
        ARM: omap2: remove unnecessary boot_lock
        ARM: versatile: rename and comment SMP implementation
        ARM: versatile: convert boot_lock to raw
        ARM: vexpress/realview: consolidate immitation CPU hotplug
        ARM: fix the cockup in the previous patch
        ARM: sa1100/cerf: switch to using gpio_led_register_device()
        ARM: sa1100/assabet: switch to using gpio leds
        ARM: sa1100/assabet: add gpio keys support for right-hand two buttons
        ARM: sa1111: remove legacy GPIO interfaces
        pcmcia: sa1100*: remove redundant bvd1/bvd2 setting
        ARM: pxa/lubbock: switch PCMCIA to MAX1600 library
        ARM: pxa/mainstone: switch PCMCIA to MAX1600 library and gpiod APIs
        ARM: sa1100/neponset: switch PCMCIA to MAX1600 library and gpiod APIs
        ARM: sa1100/jornada720: switch PCMCIA to gpiod APIs
        pcmcia: add MAX1600 library
        ARM: sa1100: explicitly register sa11x0-pcmcia devices
        ARM: 8813/1: Make aligned 2-byte getuser()/putuser() atomic on ARMv6+
        ARM: 8812/1: Optimise copy_{from/to}_user for !CPU_USE_DOMAINS
        ARM: 8811/1: always list both ldrd/strd registers explicitly
        ARM: 8808/1: kexec:offline panic_smp_self_stop CPU
        ...
      1205b623
    • Linus Torvalds's avatar
      Merge tag 'csky-for-linus-4.21' of git://github.com/c-sky/csky-linux · 9ee3b3f4
      Linus Torvalds authored
      Pull arch/csky updates from Guo Ren:
       "Here are three main features (cpu_hotplug, basic ftrace, basic perf)
        and some bugfixes:
      
        Features:
         - Add CPU-hotplug support for SMP
         - Add ftrace with function trace and function graph trace
         - Add Perf support
         - Add EM_CSKY_OLD 39
         - optimize kernel panic print.
         - remove syscall_exit_work
      
        Bugfixes:
         - fix abiv2 mmap(... O_SYNC) failure
         - fix gdb coredump error
         - remove vdsp implement for kernel
         - fix qemu failure to bootup sometimes
         - fix ftrace call-graph panic
         - fix device tree node reference leak
         - remove meaningless header-y
         - fix save hi,lo,dspcr regs in switch_stack
         - remove unused members in processor.h"
      
      * tag 'csky-for-linus-4.21' of git://github.com/c-sky/csky-linux:
        csky: Add perf support for C-SKY
        csky: Add EM_CSKY_OLD 39
        clocksource/drivers/c-sky: fixup ftrace call-graph panic
        csky: ftrace call graph supported.
        csky: basic ftrace supported
        csky: remove unused members in processor.h
        csky: optimize kernel panic print.
        csky: stacktrace supported.
        csky: CPU-hotplug supported for SMP
        clocksource/drivers/c-sky: fixup qemu fail to bootup sometimes.
        csky: fixup save hi,lo,dspcr regs in switch_stack.
        csky: remove syscall_exit_work
        csky: fixup remove vdsp implement for kernel.
        csky: bugfix gdb coredump error.
        csky: fixup abiv2 mmap(... O_SYNC) failed.
        csky: define syscall_get_arch()
        elf-em.h: add EM_CSKY
        csky: remove meaningless header-y
        csky: Don't leak device tree node reference
      9ee3b3f4
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · a6598110
      Linus Torvalds authored
      Merge more updates from Andrew Morton:
      
       - procfs updates
      
       - various misc bits
      
       - lib/ updates
      
       - epoll updates
      
       - autofs
      
       - fatfs
      
       - a few more MM bits
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (58 commits)
        mm/page_io.c: fix polled swap page in
        checkpatch: add Co-developed-by to signature tags
        docs: fix Co-Developed-by docs
        drivers/base/platform.c: kmemleak ignore a known leak
        fs: don't open code lru_to_page()
        fs/: remove caller signal_pending branch predictions
        mm/: remove caller signal_pending branch predictions
        arch/arc/mm/fault.c: remove caller signal_pending_branch predictions
        kernel/sched/: remove caller signal_pending branch predictions
        kernel/locking/mutex.c: remove caller signal_pending branch predictions
        mm: select HAVE_MOVE_PMD on x86 for faster mremap
        mm: speed up mremap by 20x on large regions
        mm: treewide: remove unused address argument from pte_alloc functions
        initramfs: cleanup incomplete rootfs
        scripts/gdb: fix lx-version string output
        kernel/kcov.c: mark write_comp_data() as notrace
        kernel/sysctl: add panic_print into sysctl
        panic: add options to print system info when panic happens
        bfs: extra sanity checking and static inode bitmap
        exec: separate MM_ANONPAGES and RLIMIT_STACK accounting
        ...
      a6598110
  2. Jan 05, 2019
    • Christoph Hellwig's avatar
      ia64: fix compile without swiotlb · 3fed6ae4
      Christoph Hellwig authored
      Some non-generic ia64 configs don't build swiotlb, and thus should not
      pull in the generic non-coherent DMA infrastructure.
      
      Fixes: 68c60834
      
       ("swiotlb: remove dma_mark_clean")
      Reported-by: default avatarTony Luck <tony.luck@gmail.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3fed6ae4
    • Linus Torvalds's avatar
      x86: re-introduce non-generic memcpy_{to,from}io · 170d13ca
      Linus Torvalds authored
      This has been broken forever, and nobody ever really noticed because
      it's purely a performance issue.
      
      Long long ago, in commit 6175ddf0 ("x86: Clean up mem*io functions")
      Brian Gerst simplified the memory copies to and from iomem, since on
      x86, the instructions to access iomem are exactly the same as the
      regular instructions.
      
      That is technically true, and things worked, and nobody said anything.
      Besides, back then the regular memcpy was pretty simple and worked fine.
      
      Nobody noticed except for David Laight, that is.  David has a testing a
      TLP monitor he was writing for an FPGA, and has been occasionally
      complaining about how memcpy_toio() writes things one byte at a time.
      
      Which is completely unacceptable from a performance standpoint, even if
      it happens to technically work.
      
      The reason it's writing one byte at a time is because while it's
      technically true that accesses to iomem are the same as accesses to
      regular memory on x86, the _granularity_ (and ordering) of accesses
      matter to iomem in ways that they don't matter to regular cached memory.
      
      In particular, when ERMS is set, we default to using "rep movsb" for
      larger memory copies.  That is indeed perfectly fine for real memory,
      since the whole point is that the CPU is going to do cacheline
      optimizations and executes the memory copy efficiently for cached
      memory.
      
      With iomem? Not so much.  With iomem, "rep movsb" will indeed work, but
      it will copy things one byte at a time. Slowly and ponderously.
      
      Now, originally, back in 2010 when commit 6175ddf0
      
       was done, we
      didn't use ERMS, and this was much less noticeable.
      
      Our normal memcpy() was simpler in other ways too.
      
      Because in fact, it's not just about using the string instructions.  Our
      memcpy() these days does things like "read and write overlapping values"
      to handle the last bytes of the copy.  Again, for normal memory,
      overlapping accesses isn't an issue.  For iomem? It can be.
      
      So this re-introduces the specialized memcpy_toio(), memcpy_fromio() and
      memset_io() functions.  It doesn't particularly optimize them, but it
      tries to at least not be horrid, or do overlapping accesses.  In fact,
      this uses the existing __inline_memcpy() function that we still had
      lying around that uses our very traditional "rep movsl" loop followed by
      movsw/movsb for the final bytes.
      
      Somebody may decide to try to improve on it, but if we've gone almost a
      decade with only one person really ever noticing and complaining, maybe
      it's not worth worrying about further, once it's not _completely_ broken?
      
      Reported-by: default avatarDavid Laight <David.Laight@aculab.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      170d13ca
    • Linus Torvalds's avatar
      Use __put_user_goto in __put_user_size() and unsafe_put_user() · a959dc88
      Linus Torvalds authored
      
      
      This actually enables the __put_user_goto() functionality in
      unsafe_put_user().
      
      For an example of the effect of this, this is the code generated for the
      
              unsafe_put_user(signo, &infop->si_signo, Efault);
      
      in the waitid() system call:
      
      	movl %ecx,(%rbx)        # signo, MEM[(struct __large_struct *)_2]
      
      It's just one single store instruction, along with generating an
      exception table entry pointing to the Efault label case in case that
      instruction faults.
      
      Before, we would generate this:
      
      	xorl    %edx, %edx
      	movl %ecx,(%rbx)        # signo, MEM[(struct __large_struct *)_3]
              testl   %edx, %edx
              jne     .L309
      
      with the exception table generated for that 'mov' instruction causing us
      to jump to a stub that set %edx to -EFAULT and then jumped back to the
      'testl' instruction.
      
      So not only do we now get rid of the extra code in the normal sequence,
      we also avoid unnecessarily keeping that extra error register live
      across it all.
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a959dc88
    • Linus Torvalds's avatar
      x86 uaccess: Introduce __put_user_goto · 4a789213
      Linus Torvalds authored
      This is finally the actual reason for the odd error handling in the
      "unsafe_get/put_user()" functions, introduced over three years ago.
      
      Using a "jump to error label" interface is somewhat odd, but very
      convenient as a programming interface, and more importantly, it fits
      very well with simply making the target be the exception handler address
      directly from the inline asm.
      
      The reason it took over three years to actually do this? We need "asm
      goto" support for it, which only became the default on x86 last year.
      It's now been a year that we've forced asm goto support (see commit
      e501ce95
      
       "x86: Force asm-goto"), and so let's just do it here too.
      
      [ Side note: this commit was originally done back in 2016. The above
        commentary about timing is obviously about it only now getting merged
        into my real upstream tree     - Linus ]
      
      Sadly, gcc still only supports "asm goto" with asms that do not have any
      outputs, so we are limited to only the put_user case for this.  Maybe in
      several more years we can do the get_user case too.
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4a789213
    • Helge Deller's avatar
      parisc: Remap hugepage-aligned pages in set_kernel_text_rw() · dfbaecb2
      Helge Deller authored
      The alternative coding patch for parisc in kernel 4.20 broke booting
      machines with PA8500-PA8700 CPUs. The problem is, that for such machines
      the parisc kernel automatically utilizes huge pages to access kernel
      text code, but the set_kernel_text_rw() function, which is used shortly
      before applying any alternative patches, didn't used the correctly
      hugepage-aligned addresses to remap the kernel text read-writeable.
      
      Fixes: 3847dab7
      
       ("parisc: Add alternative coding infrastructure")
      Cc: <stable@vger.kernel.org>	[4.20]
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      dfbaecb2
    • Olof Johansson's avatar
      Merge branch 'next/drivers' into next/late · 00f8ccd0
      Olof Johansson authored
      
      
      Merge in a few missing patches from the pull request (my copy of the
      branch was behind the staged version in linux-next).
      
      * next/drivers:
        memory: pl353: Add driver for arm pl353 static memory controller
        dt-bindings: memory: Add pl353 smc controller devicetree binding information
        firmware: qcom: scm: fix compilation error when disabled
      
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      00f8ccd0
    • Masahiro Yamada's avatar
      ARM: multi_v7_defconfig: enable CONFIG_UNIPHIER_MDMAC · 8e564895
      Masahiro Yamada authored
      
      
      Enable the UniPhier MIO DMAC driver. This is used as the DMA engine
      for accelerating the SD/eMMC controller drivers.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      8e564895
    • Jens Axboe's avatar
      mm/page_io.c: fix polled swap page in · b685a735
      Jens Axboe authored
      
      
      swap_readpage() wants to do polling to bring in pages if asked to, but
      it doesn't mark the bio as being polled.  Additionally, the looping
      around the blk_poll() check isn't correct - if we get a zero return, we
      should call io_schedule(), we can't just assume that the bio has
      completed.  The regular bio->bi_private check should be used for that.
      
      Link: http://lkml.kernel.org/r/e15243a8-2cdf-c32c-ecee-f289377c8ef9@kernel.dk
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b685a735
    • Jorge Ramirez-Ortiz's avatar
      checkpatch: add Co-developed-by to signature tags · d499480c
      Jorge Ramirez-Ortiz authored
      
      
      As per Documentation/process/submitting-patches, Co-developed-by is a
      valid signature.
      
      This commit removes the warning.
      
      Link: http://lkml.kernel.org/r/1544808928-20002-3-git-send-email-jorge.ramirez-ortiz@linaro.org
      Signed-off-by: default avatarJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Himanshu Jha <himanshujha199640@gmail.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Jonathan Cameron <jic23@kernel.org>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Niklas Cassel <niklas.cassel@linaro.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d499480c
    • Jorge Ramirez-Ortiz's avatar
      docs: fix Co-Developed-by docs · ae67ee6c
      Jorge Ramirez-Ortiz authored
      
      
      The accepted terminology will be Co-developed-by therefore lose the
      capital letter from now on.
      
      Link: http://lkml.kernel.org/r/1544808928-20002-2-git-send-email-jorge.ramirez-ortiz@linaro.org
      Signed-off-by: default avatarJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
      Acked-by: default avatarHimanshu Jha <himanshujha199640@gmail.com>
      Cc: Jonathan Cameron <jic23@kernel.org>
      Cc: Joe Perches <joe@perches.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Niklas Cassel <niklas.cassel@linaro.org>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ae67ee6c
    • Qian Cai's avatar
      drivers/base/platform.c: kmemleak ignore a known leak · 967d3010
      Qian Cai authored
      
      
      unreferenced object 0xffff808ec6dc5a80 (size 128):
        comm "swapper/0", pid 1, jiffies 4294938063 (age 2560.530s)
        hex dump (first 32 bytes):
          ff ff ff ff 00 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b  ........kkkkkkkk
          6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
        backtrace:
          [<00000000476dcf8c>] kmem_cache_alloc_trace+0x430/0x500
          [<000000004f708d37>] platform_device_register_full+0xbc/0x1e8
          [<000000006c2a7ec7>] acpi_create_platform_device+0x370/0x450
          [<00000000ef135642>] acpi_default_enumeration+0x34/0x78
          [<000000003bd9a052>] acpi_bus_attach+0x2dc/0x3e0
          [<000000003cf4f7f2>] acpi_bus_attach+0x108/0x3e0
          [<000000003cf4f7f2>] acpi_bus_attach+0x108/0x3e0
          [<000000002968643e>] acpi_bus_scan+0xb0/0x110
          [<0000000010dd0bd7>] acpi_scan_init+0x1a8/0x410
          [<00000000965b3c5a>] acpi_init+0x408/0x49c
          [<00000000ed4b9fe2>] do_one_initcall+0x178/0x7f4
          [<00000000a5ac5a74>] kernel_init_freeable+0x9d4/0xa9c
          [<0000000070ea6c15>] kernel_init+0x18/0x138
          [<00000000fb8fff06>] ret_from_fork+0x10/0x1c
          [<0000000041273a0d>] 0xffffffffffffffff
      
      Then, faddr2line pointed out this line,
      
      /*
       * This memory isn't freed when the device is put,
       * I don't have a nice idea for that though.  Conceptually
       * dma_mask in struct device should not be a pointer.
       * See http://thread.gmane.org/gmane.linux.kernel.pci/9081
       */
      pdev->dev.dma_mask =
      	kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL);
      
      Since this leak has existed for more than 8 years and it does not
      reference other parts of the memory, let kmemleak ignore it, so users
      don't need to waste time reporting this in the future.
      
      Link: http://lkml.kernel.org/r/20181206160751.36211-1-cai@gmx.us
      Signed-off-by: default avatarQian Cai <cai@gmx.us>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: "Rafael J . Wysocki" <rafael.j.wysocki@intel.com>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      967d3010
    • Nikolay Borisov's avatar
      fs: don't open code lru_to_page() · f86196ea
      Nikolay Borisov authored
      
      
      Multiple filesystems open code lru_to_page().  Rectify this by moving
      the macro from mm_inline (which is specific to lru stuff) to the more
      generic mm.h header and start using the macro where appropriate.
      
      No functional changes.
      
      Link: http://lkml.kernel.org/r/20181129104810.23361-1-nborisov@suse.com
      Link: https://lkml.kernel.org/r/20181129075301.29087-1-nborisov@suse.com
      Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
      Reviewed-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Acked-by: default avatarPankaj gupta <pagupta@redhat.com>
      Acked-by: "Yan, Zheng" <zyan@redhat.com>		[ceph]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f86196ea
    • Davidlohr Bueso's avatar
      fs/: remove caller signal_pending branch predictions · 08d405c8
      Davidlohr Bueso authored
      
      
      This is already done for us internally by the signal machinery.
      
      [akpm@linux-foundation.org: fix fs/buffer.c]
      Link: http://lkml.kernel.org/r/20181116002713.8474-7-dave@stgolabs.net
      Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      08d405c8
    • Davidlohr Bueso's avatar
      mm/: remove caller signal_pending branch predictions · fa45f116
      Davidlohr Bueso authored
      
      
      This is already done for us internally by the signal machinery.
      
      Link: http://lkml.kernel.org/r/20181116002713.8474-5-dave@stgolabs.net
      Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fa45f116
    • Davidlohr Bueso's avatar
      arch/arc/mm/fault.c: remove caller signal_pending_branch predictions · d8d7d842
      Davidlohr Bueso authored
      
      
      This is already done for us internally by the signal machinery.
      
      Link: http://lkml.kernel.org/r/20181116002713.8474-4-dave@stgolabs.net
      Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d8d7d842
    • Davidlohr Bueso's avatar
      kernel/sched/: remove caller signal_pending branch predictions · 34ec35ad
      Davidlohr Bueso authored
      
      
      This is already done for us internally by the signal machinery.
      
      Link: http://lkml.kernel.org/r/20181116002713.8474-3-dave@stgolabs.net
      Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      34ec35ad
    • Davidlohr Bueso's avatar
      kernel/locking/mutex.c: remove caller signal_pending branch predictions · 3bb5f4ac
      Davidlohr Bueso authored
      
      
      This is already done for us internally by the signal machinery.
      
      Link: http://lkml.kernel.org/r/20181116002713.8474-2-dave@stgolabs.net
      Signed-off-by: default avatarDavidlohr Bueso <dave@stgolabs.net>
      Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3bb5f4ac
    • Joel Fernandes (Google)'s avatar
      mm: select HAVE_MOVE_PMD on x86 for faster mremap · 9f132f7e
      Joel Fernandes (Google) authored
      
      
      Moving page-tables at the PMD-level on x86 is known to be safe.  Enable
      this option so that we can do fast mremap when possible.
      
      Link: http://lkml.kernel.org/r/20181108181201.88826-4-joelaf@google.com
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Suggested-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Acked-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Cc: Julia Lawall <Julia.Lawall@lip6.fr>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: William Kucharski <william.kucharski@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9f132f7e
    • Joel Fernandes (Google)'s avatar
      mm: speed up mremap by 20x on large regions · 2c91bd4a
      Joel Fernandes (Google) authored
      
      
      Android needs to mremap large regions of memory during memory management
      related operations.  The mremap system call can be really slow if THP is
      not enabled.  The bottleneck is move_page_tables, which is copying each
      pte at a time, and can be really slow across a large map.  Turning on
      THP may not be a viable option, and is not for us.  This patch speeds up
      the performance for non-THP system by copying at the PMD level when
      possible.
      
      The speedup is an order of magnitude on x86 (~20x).  On a 1GB mremap,
      the mremap completion times drops from 3.4-3.6 milliseconds to 144-160
      microseconds.
      
      Before:
      Total mremap time for 1GB data: 3521942 nanoseconds.
      Total mremap time for 1GB data: 3449229 nanoseconds.
      Total mremap time for 1GB data: 3488230 nanoseconds.
      
      After:
      Total mremap time for 1GB data: 150279 nanoseconds.
      Total mremap time for 1GB data: 144665 nanoseconds.
      Total mremap time for 1GB data: 158708 nanoseconds.
      
      If THP is enabled the optimization is mostly skipped except in certain
      situations.
      
      [joel@joelfernandes.org: fix 'move_normal_pmd' unused function warning]
        Link: http://lkml.kernel.org/r/20181108224457.GB209347@google.com
      Link: http://lkml.kernel.org/r/20181108181201.88826-3-joelaf@google.com
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Acked-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Reviewed-by: default avatarWilliam Kucharski <william.kucharski@oracle.com>
      Cc: Julia Lawall <Julia.Lawall@lip6.fr>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2c91bd4a
    • Joel Fernandes (Google)'s avatar
      mm: treewide: remove unused address argument from pte_alloc functions · 4cf58924
      Joel Fernandes (Google) authored
      
      
      Patch series "Add support for fast mremap".
      
      This series speeds up the mremap(2) syscall by copying page tables at
      the PMD level even for non-THP systems.  There is concern that the extra
      'address' argument that mremap passes to pte_alloc may do something
      subtle architecture related in the future that may make the scheme not
      work.  Also we find that there is no point in passing the 'address' to
      pte_alloc since its unused.  This patch therefore removes this argument
      tree-wide resulting in a nice negative diff as well.  Also ensuring
      along the way that the enabled architectures do not do anything funky
      with the 'address' argument that goes unnoticed by the optimization.
      
      Build and boot tested on x86-64.  Build tested on arm64.  The config
      enablement patch for arm64 will be posted in the future after more
      testing.
      
      The changes were obtained by applying the following Coccinelle script.
      (thanks Julia for answering all Coccinelle questions!).
      Following fix ups were done manually:
      * Removal of address argument from  pte_fragment_alloc
      * Removal of pte_alloc_one_fast definitions from m68k and microblaze.
      
      // Options: --include-headers --no-includes
      // Note: I split the 'identifier fn' line, so if you are manually
      // running it, please unsplit it so it runs for you.
      
      virtual patch
      
      @pte_alloc_func_def depends on patch exists@
      identifier E2;
      identifier fn =~
      "^(__pte_alloc|pte_alloc_one|pte_alloc|__pte_alloc_kernel|pte_alloc_one_kernel)$";
      type T2;
      @@
      
       fn(...
      - , T2 E2
       )
       { ... }
      
      @pte_alloc_func_proto_noarg depends on patch exists@
      type T1, T2, T3, T4;
      identifier fn =~ "^(__pte_alloc|pte_alloc_one|pte_alloc|__pte_alloc_kernel|pte_alloc_one_kernel)$";
      @@
      
      (
      - T3 fn(T1, T2);
      + T3 fn(T1);
      |
      - T3 fn(T1, T2, T4);
      + T3 fn(T1, T2);
      )
      
      @pte_alloc_func_proto depends on patch exists@
      identifier E1, E2, E4;
      type T1, T2, T3, T4;
      identifier fn =~
      "^(__pte_alloc|pte_alloc_one|pte_alloc|__pte_alloc_kernel|pte_alloc_one_kernel)$";
      @@
      
      (
      - T3 fn(T1 E1, T2 E2);
      + T3 fn(T1 E1);
      |
      - T3 fn(T1 E1, T2 E2, T4 E4);
      + T3 fn(T1 E1, T2 E2);
      )
      
      @pte_alloc_func_call depends on patch exists@
      expression E2;
      identifier fn =~
      "^(__pte_alloc|pte_alloc_one|pte_alloc|__pte_alloc_kernel|pte_alloc_one_kernel)$";
      @@
      
       fn(...
      -,  E2
       )
      
      @pte_alloc_macro depends on patch exists@
      identifier fn =~
      "^(__pte_alloc|pte_alloc_one|pte_alloc|__pte_alloc_kernel|pte_alloc_one_kernel)$";
      identifier a, b, c;
      expression e;
      position p;
      @@
      
      (
      - #define fn(a, b, c) e
      + #define fn(a, b) e
      |
      - #define fn(a, b) e
      + #define fn(a) e
      )
      
      Link: http://lkml.kernel.org/r/20181108181201.88826-2-joelaf@google.com
      Signed-off-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      Suggested-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Acked-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Julia Lawall <Julia.Lawall@lip6.fr>
      Cc: Kirill A. Shutemov <kirill@shutemov.name>
      Cc: William Kucharski <william.kucharski@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4cf58924
    • David Engraf's avatar
      initramfs: cleanup incomplete rootfs · ff1522bb
      David Engraf authored
      
      
      Unpacking an external initrd may fail e.g.  not enough memory.  This
      leads to an incomplete rootfs because some files might be extracted
      already.  Fixed by cleaning the rootfs so the kernel is not using an
      incomplete rootfs.
      
      Link: http://lkml.kernel.org/r/20181030151805.5519-1-david.engraf@sysgo.com
      Signed-off-by: default avatarDavid Engraf <david.engraf@sysgo.com>
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Philippe Ombredanne <pombredanne@nexb.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ff1522bb
    • Changbin Du's avatar
      scripts/gdb: fix lx-version string output · b058809b
      Changbin Du authored
      A bug is present in GDB which causes early string termination when
      parsing variables.  This has been reported [0], but we should ensure
      that we can support at least basic printing of the core kernel strings.
      
      For current gdb version (has been tested with 7.3 and 8.1), 'lx-version'
      only prints one character.
      
        (gdb) lx-version
        L(gdb)
      
      This can be fixed by casting 'linux_banner' as (char *).
      
        (gdb) lx-version
        Linux version 4.19.0-rc1+ (changbin@acer) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21 SMP Sat Sep 1 21:43:30 CST 2018
      
      [0] https://sourceware.org/bugzilla/show_bug.cgi?id=20077
      
      [kbingham@kernel.org: add detail to commit message]
      Link: http://lkml.kernel.org/r/20181111162035.8356-1-kieran.bingham@ideasonboard.com
      Fixes: 2d061d99
      
       ("scripts/gdb: add version command")
      Signed-off-by: default avatarDu Changbin <changbin.du@gmail.com>
      Signed-off-by: default avatarKieran Bingham <kbingham@kernel.org>
      Acked-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      Cc: Jan Kiszka <jan.kiszka@siemens.com>
      Cc: Jason Wessel <jason.wessel@windriver.com>
      Cc: Daniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b058809b
    • Anders Roxell's avatar
      kernel/kcov.c: mark write_comp_data() as notrace · 63472443
      Anders Roxell authored
      Since __sanitizer_cov_trace_const_cmp4 is marked as notrace, the
      function called from __sanitizer_cov_trace_const_cmp4 shouldn't be
      traceable either.  ftrace_graph_caller() gets called every time func
      write_comp_data() gets called if it isn't marked 'notrace'.  This is the
      backtrace from gdb:
      
       #0  ftrace_graph_caller () at ../arch/arm64/kernel/entry-ftrace.S:179
       #1  0xffffff8010201920 in ftrace_caller () at ../arch/arm64/kernel/entry-ftrace.S:151
       #2  0xffffff8010439714 in write_comp_data (type=5, arg1=0, arg2=0, ip=18446743524224276596) at ../kernel/kcov.c:116
       #3  0xffffff8010439894 in __sanitizer_cov_trace_const_cmp4 (arg1=<optimized out>, arg2=<optimized out>) at ../kernel/kcov.c:188
       #4  0xffffff8010201874 in prepare_ftrace_return (self_addr=18446743524226602768, parent=0xffffff801014b918, frame_pointer=18446743524223531344) at ./include/generated/atomic-instrumented.h:27
       #5  0xffffff801020194c in ftrace_graph_caller () at ../arch/arm64/kernel/entry-ftrace.S:182
      
      Rework so that write_comp_data() that are called from
      __sanitizer_cov_trace_*_cmp*() are marked as 'notrace'.
      
      Commit 903e8ff8
      
       ("kernel/kcov.c: mark funcs in __sanitizer_cov_trace_pc() as notrace")
      missed to mark write_comp_data() as 'notrace'. When that patch was
      created gcc-7 was used. In lib/Kconfig.debug
      config KCOV_ENABLE_COMPARISONS
      	depends on $(cc-option,-fsanitize-coverage=trace-cmp)
      
      That code path isn't hit with gcc-7. However, it were that with gcc-8.
      
      Link: http://lkml.kernel.org/r/20181206143011.23719-1-anders.roxell@linaro.org
      Signed-off-by: default avatarAnders Roxell <anders.roxell@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Co-developed-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      63472443
    • Feng Tang's avatar
      kernel/sysctl: add panic_print into sysctl · 81c9d43f
      Feng Tang authored
      
      
      So that we can also runtime chose to print out the needed system info
      for panic, other than setting the kernel cmdline.
      
      Link: http://lkml.kernel.org/r/1543398842-19295-3-git-send-email-feng.tang@intel.com
      Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
      Suggested-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Kees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      81c9d43f
    • Feng Tang's avatar
      panic: add options to print system info when panic happens · d999bd93
      Feng Tang authored
      
      
      Kernel panic issues are always painful to debug, partially because it's
      not easy to get enough information of the context when panic happens.
      
      And we have ramoops and kdump for that, while this commit tries to
      provide a easier way to show the system info by adding a cmdline
      parameter, referring some idea from sysrq handler.
      
      Link: http://lkml.kernel.org/r/1543398842-19295-2-git-send-email-feng.tang@intel.com
      Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: John Stultz <john.stultz@linaro.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d999bd93
    • Tigran Aivazian's avatar
      bfs: extra sanity checking and static inode bitmap · d1877155
      Tigran Aivazian authored
      
      
      Strengthen validation of BFS superblock against corruption.  Make
      in-core inode bitmap static part of superblock info structure.  Print a
      warning when mounting a BFS filesystem created with "-N 512" option as
      only 510 files can be created in the root directory.  Make the kernel
      messages more uniform.  Update the 'prefix' passed to bfs_dump_imap() to
      match the current naming of operations.  White space and comments
      cleanup.
      
      Link: http://lkml.kernel.org/r/CAK+_RLkFZMduoQF36wZFd3zLi-6ZutWKsydjeHFNdtRvZZEb4w@mail.gmail.com
      Signed-off-by: default avatarTigran Aivazian <aivazian.tigran@gmail.com>
      Reported-by: default avatarTetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d1877155
    • Oleg Nesterov's avatar
      exec: separate MM_ANONPAGES and RLIMIT_STACK accounting · 655c16a8
      Oleg Nesterov authored
      
      
      get_arg_page() checks bprm->rlim_stack.rlim_cur and re-calculates the
      "extra" size for argv/envp pointers every time, this is a bit ugly and
      even not strictly correct: acct_arg_size() must not account this size.
      
      Remove all the rlimit code in get_arg_page().  Instead, add bprm->argmin
      calculated once at the start of __do_execve_file() and change
      copy_strings to check bprm->p >= bprm->argmin.
      
      The patch adds the new helper, prepare_arg_pages() which initializes
      bprm->argc/envc and bprm->argmin.
      
      [oleg@redhat.com: fix !CONFIG_MMU version of get_arg_page()]
        Link: http://lkml.kernel.org/r/20181126122307.GA1660@redhat.com
      [akpm@linux-foundation.org: use max_t]
      Link: http://lkml.kernel.org/r/20181112160910.GA28440@redhat.com
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      655c16a8
    • Oleg Nesterov's avatar
      exec: load_script: don't blindly truncate shebang string · 8099b047
      Oleg Nesterov authored
      
      
      load_script() simply truncates bprm->buf and this is very wrong if the
      length of shebang string exceeds BINPRM_BUF_SIZE-2.  This can silently
      truncate i_arg or (worse) we can execute the wrong binary if buf[2:126]
      happens to be the valid executable path.
      
      Change load_script() to return ENOEXEC if it can't find '\n' or zero in
      bprm->buf.  Note that '\0' can come from either
      prepare_binprm()->memset() or from kernel_read(), we do not care.
      
      Link: http://lkml.kernel.org/r/20181112160931.GA28463@redhat.com
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Ben Woodard <woodard@redhat.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8099b047