1. 26 5月, 2018 1 次提交
  2. 21 5月, 2018 20 次提交
  3. 20 5月, 2018 5 次提交
    • L
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 203ec2fe
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Olof Johansson:
       "A handful of fixes. I've been queuing them up a bit too long so the
        list is longer than it otherwise would have been spread out across a
        few -rcs.
      
        In general, it's a scattering of fixes across several platforms,
        nothing truly serious enough to point out.
      
        There's a slightly larger batch of them for the Davinci platforms due
        to work to bring them back to life after some time, so there's a
        handful of regressions, some of them going back very far, others more
        recent.
      
        There's also a few patches fixing DT on Renesas platforms since they
        changed some bindings without remaining backwards compatible,
        splitting up describing LVDS as a proper bridge instead of having it
        as part of the display unit.
      
        We could push for them to be backwards compatible with old device
        trees, but it's likely to regress eventually if nobody's actually
        using said compatibility"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (36 commits)
        ARM: davinci: board-dm646x-evm: set VPIF capture card name
        ARM: davinci: board-dm646x-evm: pass correct I2C adapter id for VPIF
        ARM: davinci: dm646x: fix timer interrupt generation
        ARM: keystone: fix platform_domain_notifier array overrun
        arm64: dts: exynos: Fix interrupt type for I2S1 device on Exynos5433
        ARM: dts: imx51-zii-rdu1: fix touchscreen bindings
        firmware: arm_scmi: Use after free in scmi_create_protocol_device()
        ARM: dts: cygnus: fix irq type for arm global timer
        Revert "ARM: dts: logicpd-som-lv: Fix pinmux controller references"
        tee: check shm references are consistent in offset/size
        tee: shm: fix use-after-free via temporarily dropped reference
        ARM: dts: imx7s: Pass the 'fsl,sec-era' property
        ARM: dts: tegra20: Revert "Fix ULPI regression on Tegra20"
        ARM: dts: correct missing "compatible" entry for ti81xx SoCs
        ARM: OMAP1: ams-delta: fix deferred_fiq handler
        arm64: tegra: Make BCM89610 PHY interrupt as active low
        ARM: davinci: fix GPIO lookup for I2C
        ARM: dts: logicpd-som-lv: Fix pinmux controller references
        ARM: dts: logicpd-som-lv: Fix Audio Mute
        ARM: dts: logicpd-som-lv: Fix WL127x Startup Issues
        ...
      203ec2fe
    • O
      Merge tag 'tegra-for-4.17-fixes-2' of... · 709f490d
      Olof Johansson 提交于
      Merge tag 'tegra-for-4.17-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into fixes
      
      arm64: tegra: Device tree fixes for v4.17
      
      This contains a one-line update to the device tree of the Tegra186 P3310
      processor module, fixing the polarity of the PHY interrupt. Originally,
      this was queued to go into v4.18, but the PHY ID matching patch has now
      found its way into v4.17-rc5, which means that the PHY driver will know
      how to identify the PHY on this board and try to use the interrupt. This
      will unfortunately cause networking to break on P3310, hence why I think
      this should go into v4.17.
      
      * tag 'tegra-for-4.17-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
        arm64: tegra: Make BCM89610 PHY interrupt as active low
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      709f490d
    • R
      ARM: fix kill( ,SIGFPE) breakage · 92d44a42
      Russell King 提交于
      Commit 7771c664 ("signal/arm: Document conflicts with SI_USER and
      SIGFPE") broke the siginfo structure for userspace triggered signals,
      causing the strace testsuite to regress.  Fix this by eliminating
      the FPE_FIXME definition (which is at the root of the breakage) and
      use FPE_FLTINV instead for the case where the hardware appears to be
      reporting nonsense.
      
      Fixes: 7771c664 ("signal/arm: Document conflicts with SI_USER and SIGFPE")
      Suggested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      92d44a42
    • L
      Merge tag 'dmaengine-fix-4.17-rc6' of git://git.infradead.org/users/vkoul/slave-dma · 0b449a44
      Linus Torvalds 提交于
      Pull dmaengine fix from Vinod Koul:
      
       - qcom bam runtime_pm fix
      
       - email update for Vinod
      
      * tag 'dmaengine-fix-4.17-rc6' of git://git.infradead.org/users/vkoul/slave-dma:
        dmaengine: qcom: bam_dma: check if the runtime pm enabled
        dmaengine: Update email address for Vinod
      0b449a44
    • L
      mmap: relax file size limit for regular files · 423913ad
      Linus Torvalds 提交于
      Commit be83bbf8 ("mmap: introduce sane default mmap limits") was
      introduced to catch problems in various ad-hoc character device drivers
      doing mmap and getting the size limits wrong.  In the process, it used
      "known good" limits for the normal cases of mapping regular files and
      block device drivers.
      
      It turns out that the "s_maxbytes" limit was less "known good" than I
      thought.  In particular, /proc doesn't set it, but exposes one regular
      file to mmap: /proc/vmcore.  As a result, that file got limited to the
      default MAX_INT s_maxbytes value.
      
      This went unnoticed for a while, because apparently the only thing that
      needs it is the s390 kernel zfcpdump, but there might be other tools
      that use this too.
      
      Vasily suggested just changing s_maxbytes for all of /proc, which isn't
      wrong, but makes me nervous at this stage.  So instead, just make the
      new mmap limit always be MAX_LFS_FILESIZE for regular files, which won't
      affect anything else.  It wasn't the regular file case I was worried
      about.
      
      I'd really prefer for maxsize to have been per-inode, but that is not
      how things are today.
      
      Fixes: be83bbf8 ("mmap: introduce sane default mmap limits")
      Reported-by: NVasily Gorbik <gor@linux.ibm.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      423913ad
  4. 19 5月, 2018 14 次提交
    • B
      x86/MCE/AMD: Cache SMCA MISC block addresses · 78ce2410
      Borislav Petkov 提交于
      ... into a global, two-dimensional array and service subsequent reads from
      that cache to avoid rdmsr_on_cpu() calls during CPU hotplug (IPIs with IRQs
      disabled).
      
      In addition, this fixes a KASAN slab-out-of-bounds read due to wrong usage
      of the bank->blocks pointer.
      
      Fixes: 27bd5950 ("x86/mce/AMD: Get address from already initialized block")
      Reported-by: NJohannes Hirte <johannes.hirte@datenkhaos.de>
      Tested-by: NJohannes Hirte <johannes.hirte@datenkhaos.de>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Yazen Ghannam <yazen.ghannam@amd.com>
      Link: http://lkml.kernel.org/r/20180414004230.GA2033@probook
      78ce2410
    • M
      ARM: 8772/1: kprobes: Prohibit kprobes on get_user functions · 0d73c3f8
      Masami Hiramatsu 提交于
      Since do_undefinstr() uses get_user to get the undefined
      instruction, it can be called before kprobes processes
      recursive check. This can cause an infinit recursive
      exception.
      Prohibit probing on get_user functions.
      
      Fixes: 24ba613c ("ARM kprobes: core code")
      Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      0d73c3f8
    • M
      ARM: 8771/1: kprobes: Prohibit kprobes on do_undefinstr · eb0146da
      Masami Hiramatsu 提交于
      Prohibit kprobes on do_undefinstr because kprobes on
      arm is implemented by undefined instruction. This means
      if we probe do_undefinstr(), it can cause infinit
      recursive exception.
      
      Fixes: 24ba613c ("ARM kprobes: core code")
      Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      eb0146da
    • M
      ARM: 8770/1: kprobes: Prohibit probing on optimized_callback · 70948c05
      Masami Hiramatsu 提交于
      Prohibit probing on optimized_callback() because
      it is called from kprobes itself. If we put a kprobes
      on it, that will cause a recursive call loop.
      Mark it NOKPROBE_SYMBOL.
      
      Fixes: 0dc016db ("ARM: kprobes: enable OPTPROBES for ARM 32")
      Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      70948c05
    • M
      ARM: 8769/1: kprobes: Fix to use get_kprobe_ctlblk after irq-disabed · 69af7e23
      Masami Hiramatsu 提交于
      Since get_kprobe_ctlblk() uses smp_processor_id() to access
      per-cpu variable, it hits smp_processor_id sanity check as below.
      
      [    7.006928] BUG: using smp_processor_id() in preemptible [00000000] code: swapper/0/1
      [    7.007859] caller is debug_smp_processor_id+0x20/0x24
      [    7.008438] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.16.0-rc1-00192-g4eb17253e4b5 #1
      [    7.008890] Hardware name: Generic DT based system
      [    7.009917] [<c0313f0c>] (unwind_backtrace) from [<c030e6d8>] (show_stack+0x20/0x24)
      [    7.010473] [<c030e6d8>] (show_stack) from [<c0c64694>] (dump_stack+0x84/0x98)
      [    7.010990] [<c0c64694>] (dump_stack) from [<c071ca5c>] (check_preemption_disabled+0x138/0x13c)
      [    7.011592] [<c071ca5c>] (check_preemption_disabled) from [<c071ca80>] (debug_smp_processor_id+0x20/0x24)
      [    7.012214] [<c071ca80>] (debug_smp_processor_id) from [<c03335e0>] (optimized_callback+0x2c/0xe4)
      [    7.013077] [<c03335e0>] (optimized_callback) from [<bf0021b0>] (0xbf0021b0)
      
      To fix this issue, call get_kprobe_ctlblk() right after
      irq-disabled since that disables preemption.
      
      Fixes: 0dc016db ("ARM: kprobes: enable OPTPROBES for ARM 32")
      Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      69af7e23
    • R
      ARM: replace unnecessary perl with sed and the shell $(( )) operator · 6cea14f5
      Russell King 提交于
      You can build a kernel in a cross compiling environment that doesn't
      have perl in the $PATH. Commit 429f7a06 broke that for 32 bit
      ARM. Fix it.
      
      As reported by Stephen Rothwell, it appears that the symbols can be
      either part of the BSS section or absolute symbols depending on the
      binutils version.  When they're an absolute symbol, the $(( ))
      operator errors out and the build fails.  Fix this as well.
      
      Fixes: 429f7a06 ("ARM: decompressor: fix BSS size calculation")
      Reported-by: NRob Landley <rob@landley.net>
      Reported-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Acked-by: NRob Landley <rob@landley.net>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      6cea14f5
    • R
      ARM: kexec: record parent context registers for non-crash CPUs · 1c37963b
      Russell King 提交于
      How we got to machine_crash_nonpanic_core() (iow, from an IPI, etc) is
      not interesting for debugging a crash.  The more interesting context
      is the parent context prior to the IPI being received.
      
      Record the parent context register state rather than the register state
      in machine_crash_nonpanic_core(), which is more relevant to the failing
      condition.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      1c37963b
    • R
      ARM: kexec: fix kdump register saving on panic() · 2d7b3c64
      Russell King 提交于
      When a panic() occurs, the kexec code uses smp_send_stop() to stop
      the other CPUs, but this results in the CPU register state not being
      saved, and gdb is unable to inspect the state of other CPUs.
      
      Commit 0ee59413 ("x86/panic: replace smp_send_stop() with kdump
      friendly version in panic path") addressed the issue on x86, but
      ignored other architectures.  Address the issue on ARM by splitting
      out the crash stop implementation to crash_smp_send_stop() and
      adding the necessary protection.
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      2d7b3c64
    • Ł
      ARM: 8758/1: decompressor: restore r1 and r2 just before jumping to the kernel · f2ae9de0
      Łukasz Stelmach 提交于
      The hypervisor setup before __enter_kernel destroys the value
      sotred in r1. The value needs to be restored just before the jump.
      
      Fixes: 6b52f7bd ("ARM: hyp-stub: Use r1 for the soft-restart address")
      Signed-off-by: NŁukasz Stelmach <l.stelmach@samsung.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      f2ae9de0
    • Ł
      ARM: 8753/1: decompressor: add a missing parameter to the addruart macro · e07e3c33
      Łukasz Stelmach 提交于
      In commit 639da5ee ("ARM: add an extra temp register to the low
      level debugging addruart macro") an additional temporary register was
      added to the addruart macro, but the decompressor code wasn't updated.
      
      Fixes: 639da5ee ("ARM: add an extra temp register to the low level debugging addruart macro")
      Signed-off-by: NŁukasz Stelmach <l.stelmach@samsung.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      e07e3c33
    • D
      x86/mm: Drop TS_COMPAT on 64-bit exec() syscall · acf46020
      Dmitry Safonov 提交于
      The x86 mmap() code selects the mmap base for an allocation depending on
      the bitness of the syscall. For 64bit sycalls it select mm->mmap_base and
      for 32bit mm->mmap_compat_base.
      
      exec() calls mmap() which in turn uses in_compat_syscall() to check whether
      the mapping is for a 32bit or a 64bit task. The decision is made on the
      following criteria:
      
        ia32    child->thread.status & TS_COMPAT
         x32    child->pt_regs.orig_ax & __X32_SYSCALL_BIT
        ia64    !ia32 && !x32
      
      __set_personality_x32() was dropping TS_COMPAT flag, but
      set_personality_64bit() has kept compat syscall flag making
      in_compat_syscall() return true during the first exec() syscall.
      
      Which in result has user-visible effects, mentioned by Alexey:
      1) It breaks ASAN
      $ gcc -fsanitize=address wrap.c -o wrap-asan
      $ ./wrap32 ./wrap-asan true
      ==1217==Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING.
      ==1217==ASan shadow was supposed to be located in the [0x00007fff7000-0x10007fff7fff] range.
      ==1217==Process memory map follows:
              0x000000400000-0x000000401000   /home/izbyshev/test/gcc/asan-exec-from-32bit/wrap-asan
              0x000000600000-0x000000601000   /home/izbyshev/test/gcc/asan-exec-from-32bit/wrap-asan
              0x000000601000-0x000000602000   /home/izbyshev/test/gcc/asan-exec-from-32bit/wrap-asan
              0x0000f7dbd000-0x0000f7de2000   /lib64/ld-2.27.so
              0x0000f7fe2000-0x0000f7fe3000   /lib64/ld-2.27.so
              0x0000f7fe3000-0x0000f7fe4000   /lib64/ld-2.27.so
              0x0000f7fe4000-0x0000f7fe5000
              0x7fed9abff000-0x7fed9af54000
              0x7fed9af54000-0x7fed9af6b000   /lib64/libgcc_s.so.1
      [snip]
      
      2) It doesn't seem to be great for security if an attacker always knows
      that ld.so is going to be mapped into the first 4GB in this case
      (the same thing happens for PIEs as well).
      
      The testcase:
      $ cat wrap.c
      
      int main(int argc, char *argv[]) {
        execvp(argv[1], &argv[1]);
        return 127;
      }
      
      $ gcc wrap.c -o wrap
      $ LD_SHOW_AUXV=1 ./wrap ./wrap true |& grep AT_BASE
      AT_BASE:         0x7f63b8309000
      AT_BASE:         0x7faec143c000
      AT_BASE:         0x7fbdb25fa000
      
      $ gcc -m32 wrap.c -o wrap32
      $ LD_SHOW_AUXV=1 ./wrap32 ./wrap true |& grep AT_BASE
      AT_BASE:         0xf7eff000
      AT_BASE:         0xf7cee000
      AT_BASE:         0x7f8b9774e000
      
      Fixes: 1b028f78 ("x86/mm: Introduce mmap_compat_base() for 32-bit mmap()")
      Fixes: ada26481 ("x86/mm: Make in_compat_syscall() work during exec")
      Reported-by: NAlexey Izbyshev <izbyshev@ispras.ru>
      Bisected-by: NAlexander Monakov <amonakov@ispras.ru>
      Investigated-by: NAndy Lutomirski <luto@kernel.org>
      Signed-off-by: NDmitry Safonov <dima@arista.com>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Alexander Monakov <amonakov@ispras.ru>
      Cc: Dmitry Safonov <0x7f454c46@gmail.com>
      Cc: stable@vger.kernel.org
      Cc: linux-mm@kvack.org
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Cyrill Gorcunov <gorcunov@openvz.org>
      Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
      Link: https://lkml.kernel.org/r/20180517233510.24996-1-dima@arista.com
      acf46020
    • J
      objtool: Detect RIP-relative switch table references, part 2 · 7dec80cc
      Josh Poimboeuf 提交于
      With the following commit:
      
        fd35c88b ("objtool: Support GCC 8 switch tables")
      
      I added a "can't find switch jump table" warning, to stop covering up
      silent failures if add_switch_table() can't find anything.
      
      That warning found yet another bug in the objtool switch table detection
      logic.  For cases 1 and 2 (as described in the comments of
      find_switch_table()), the find_symbol_containing() check doesn't adjust
      the offset for RIP-relative switch jumps.
      
      Incidentally, this bug was already fixed for case 3 with:
      
        6f5ec299 ("objtool: Detect RIP-relative switch table references")
      
      However, that commit missed the fix for cases 1 and 2.
      
      The different cases are now starting to look more and more alike.  So
      fix the bug by consolidating them into a single case, by checking the
      original dynamic jump instruction in the case 3 loop.
      
      This also simplifies the code and makes it more robust against future
      switch table detection issues -- of which I'm sure there will be many...
      
      Switch table detection has been the most fragile area of objtool, by
      far.  I long for the day when we'll have a GCC plugin for annotating
      switch tables.  Linus asked me to delay such a plugin due to the
      flakiness of the plugin infrastructure in older versions of GCC, so this
      rickety code is what we're stuck with for now.  At least the code is now
      a little simpler than it was.
      Reported-by: Nkbuild test robot <lkp@intel.com>
      Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/f400541613d45689086329432f3095119ffbc328.1526674218.git.jpoimboe@redhat.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
      7dec80cc
    • M
      efi/libstub/arm64: Handle randomized TEXT_OFFSET · 4f74d72a
      Mark Rutland 提交于
      When CONFIG_RANDOMIZE_TEXT_OFFSET=y, TEXT_OFFSET is an arbitrary
      multiple of PAGE_SIZE in the interval [0, 2MB).
      
      The EFI stub does not account for the potential misalignment of
      TEXT_OFFSET relative to EFI_KIMG_ALIGN, and produces a randomized
      physical offset which is always a round multiple of EFI_KIMG_ALIGN.
      This may result in statically allocated objects whose alignment exceeds
      PAGE_SIZE to appear misaligned in memory. This has been observed to
      result in spurious stack overflow reports and failure to make use of
      the IRQ stacks, and theoretically could result in a number of other
      issues.
      
      We can OR in the low bits of TEXT_OFFSET to ensure that we have the
      necessary offset (and hence preserve the misalignment of TEXT_OFFSET
      relative to EFI_KIMG_ALIGN), so let's do that.
      Reported-by: NKim Phillips <kim.phillips@arm.com>
      Tested-by: NKim Phillips <kim.phillips@arm.com>
      [ardb: clarify comment and commit log, drop unneeded parens]
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: linux-efi@vger.kernel.org
      Fixes: 6f26b367 ("arm64: kaslr: increase randomization granularity")
      Link: http://lkml.kernel.org/r/20180518140841.9731-2-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
      4f74d72a
    • L
      Merge branch 'akpm' (patches from Andrew) · 73fcb1a3
      Linus Torvalds 提交于
      Merge misc fixes from Andrew Morton:
       "10 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        hfsplus: stop workqueue when fill_super() failed
        mm: don't allow deferred pages with NEED_PER_CPU_KM
        MAINTAINERS: add Q: entry to kselftest for patchwork project
        radix tree: fix multi-order iteration race
        radix tree test suite: multi-order iteration race
        radix tree test suite: add item_delete_rcu()
        radix tree test suite: fix compilation issue
        radix tree test suite: fix mapshift build target
        include/linux/mm.h: add new inline function vmf_error()
        lib/test_bitmap.c: fix bitmap optimisation tests to report errors correctly
      73fcb1a3