Skip to content
  1. Nov 10, 2016
    • Thomas Gleixner's avatar
      x86/cpu: Deal with broken firmware (VMWare/XEN) · d49597fd
      Thomas Gleixner authored
      
      
      Both ACPI and MP specifications require that the APIC id in the respective
      tables must be the same as the APIC id in CPUID.
      
      The kernel retrieves the physical package id from the APIC id during the
      ACPI/MP table scan and builds the physical to logical package map. The
      physical package id which is used after a CPU comes up is retrieved from
      CPUID. So we rely on ACPI/MP tables and CPUID agreeing in that respect.
      
      There exist VMware and XEN implementations which violate the spec. As a
      result the physical to logical package map, which relies on the ACPI/MP
      tables does not work on those systems, because the CPUID initialized
      physical package id does not match the firmware id. This causes system
      crashes and malfunction due to invalid package mappings.
      
      The only way to cure this is to sanitize the physical package id after the
      CPUID enumeration and yell when the APIC ids are different. Fix up the
      initial APIC id, which is fine as it is only used printout purposes.
      
      If the physical package IDs differ yell and use the package information
      from the ACPI/MP tables so the existing logical package map just works.
      
      Chas provided the resulting dmesg output for his affected 4 virtual
      sockets, 1 core per socket VM:
      
      [Firmware Bug]: CPU1: APIC id mismatch. Firmware: 1 CPUID: 2
      [Firmware Bug]: CPU1: Using firmware package id 1 instead of 2
      ....
      
      Reported-and-tested-by: default avatar"Charles (Chas) Williams" <ciwillia@brocade.com&gt;,>
      Reported-by: default avatarM. Vefa Bicakci <m.v.b@runbox.com>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Alok Kataria <akataria@vmware.com>
      Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
      Cc: #4.6+ <stable@vger,kernel.org>
      Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1611091613540.3501@nanos
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      d49597fd
    • Yazen Ghannam's avatar
      x86/cpu/AMD: Fix cpu_llc_id for AMD Fam17h systems · b0b6e868
      Yazen Ghannam authored
      
      
      cpu_llc_id (Last Level Cache ID) derivation on AMD Fam17h has an
      underflow bug when extracting the socket_id value. It starts from 0
      so subtracting 1 from it will result in an invalid value. This breaks
      scheduling topology later on since the cpu_llc_id will be incorrect.
      
      For example, the the cpu_llc_id of the *other* CPU in the loops in
      set_cpu_sibling_map() underflows and we're generating the funniest
      thread_siblings masks and then when I run 8 threads of nbench, they get
      spread around the LLC domains in a very strange pattern which doesn't
      give you the normal scheduling spread one would expect for performance.
      
      Other things like EDAC use cpu_llc_id so they will be b0rked too.
      
      So, the APIC ID is preset in APICx020 for bits 3 and above: they contain
      the core complex, node and socket IDs.
      
      The LLC is at the core complex level so we can find a unique cpu_llc_id
      by right shifting the APICID by 3 because then the least significant bit
      will be the Core Complex ID.
      
      Tested-by: default avatarBorislav Petkov <bp@suse.de>
      Signed-off-by: default avatarYazen Ghannam <Yazen.Ghannam@amd.com>
      [ Cleaned up and extended the commit message. ]
      Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
      Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: <stable@vger.kernel.org> # v4.4..
      Cc: Aravind Gopalakrishnan <aravindksg.lkml@gmail.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Fixes: 3849e91f
      
       ("x86/AMD: Fix last level cache topology for AMD Fam17h systems")
      Link: http://lkml.kernel.org/r/20161108083506.rvqb5h4chrcptj7d@pd.tnic
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      b0b6e868
  2. Nov 07, 2016
    • Lukas Wunner's avatar
      x86/platform/intel-mid: Retrofit pci_platform_pm_ops ->get_state hook · e8a6123e
      Lukas Wunner authored
      Commit cc7cc02b ("PCI: Query platform firmware for device power
      state") augmented struct pci_platform_pm_ops with a ->get_state hook and
      implemented it for acpi_pci_platform_pm, the only pci_platform_pm_ops
      existing till v4.7.
      
      However v4.8 introduced another pci_platform_pm_ops for Intel Mobile
      Internet Devices with commit 5823d089
      
       ("x86/platform/intel-mid: Add
      Power Management Unit driver").  It is missing the ->get_state hook,
      which is fatal since pci_set_platform_pm() enforces its presence.  Andy
      Shevchenko reports that without the present commit, such a device
      "crashes without even a character printed out on serial console and
      reboots (since watchdog)".
      
      Retrofit mid_pci_platform_pm with the missing callback to fix the
      breakage.
      
      Acked-and-tested-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Fixes: cc7cc02b
      
       ("PCI: Query platform firmware for device power state")
      Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
      Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Cc: linux-pci@vger.kernel.org
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Link: http://lkml.kernel.org/r/7c1567d4c49303a4aada94ba16275cbf56b8976b.1477221514.git.lukas@wunner.de
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      e8a6123e
  3. Nov 06, 2016
    • Linus Torvalds's avatar
      Linux 4.9-rc4 · bc33b0ca
      Linus Torvalds authored
      v4.9-rc4
      bc33b0ca
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · bd060ac0
      Linus Torvalds authored
      Pull i2c fix from Wolfram Sang:
       "A bugfix for the I2C core fixing a (rare) race condition"
      
      * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: core: fix NULL pointer dereference under race condition
      bd060ac0
    • Linus Torvalds's avatar
      Merge branches 'sched-urgent-for-linus' and 'core-urgent-for-linus' of... · ffbcbfca
      Linus Torvalds authored
      Merge branches 'sched-urgent-for-linus' and 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
      
      Pull stack vmap fixups from Thomas Gleixner:
       "Two small patches related to sched_show_task():
      
         - make sure to hold a reference on the task stack while accessing it
      
         - remove the thread_saved_pc printout
      
        .. and add a sanity check into release_task_stack() to catch problems
        with task stack references"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/core: Remove pointless printout in sched_show_task()
        sched/core: Fix oops in sched_show_task()
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        fork: Add task stack refcounting sanity check and prevent premature task stack freeing
      ffbcbfca
    • Linus Torvalds's avatar
      Merge tag 'md/4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md · 6c286e81
      Linus Torvalds authored
      Pull MD fixes from Shaohua Li:
       "There are several bug fixes queued:
      
         - fix raid5-cache recovery bugs
      
         - fix discard IO error handling for raid1/10
      
         - fix array sync writes bogus position to superblock
      
         - fix IO error handling for raid array with external metadata"
      
      * tag 'md/4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md:
        md: be careful not lot leak internal curr_resync value into metadata. -- (all)
        raid1: handle read error also in readonly mode
        raid5-cache: correct condition for empty metadata write
        md: report 'write_pending' state when array in sync
        md/raid5: write an empty meta-block when creating log super-block
        md/raid5: initialize next_checkpoint field before use
        RAID10: ignore discard error
        RAID1: ignore discard error
      6c286e81
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · e12d8d51
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Two more important data integrity fixes related to RAID device drivers
        which wrongly throw away the SYNCHRONIZE CACHE command in the non-RAID
        path and a memory leak in the scsi_debug driver"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: arcmsr: Send SYNCHRONIZE_CACHE command to firmware
        scsi: scsi_debug: Fix memory leak if LBP enabled and module is unloaded
        scsi: megaraid_sas: Fix data integrity failure for JBOD (passthrough) devices
      e12d8d51
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · f29b909d
      Linus Torvalds authored
      Pull input subsystem updates from Dmitry Torokhov.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: psmouse - cleanup Focaltech code
        Input: i8042 - add XMG C504 to keyboard reset table
      f29b909d
    • Linus Torvalds's avatar
      Merge tag 'firewire-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394 · 03daa36f
      Linus Torvalds authored
      Pull FireWire (IEEE 1394) fixes from Stefan Richter:
      
       - add missing input validation to the firewire-net driver. Invalid
         IP-over-1394 encapsulation headers could trigger buffer overflows
         (CVE 2016-8633).
      
       - IP-over-1394 link fragmentation headers were read and written
         incorrectly, breaking fragmented RX/TX with other OS's stacks.
      
      * tag 'firewire-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
        firewire: net: fix fragmented datagram_size off-by-one
        firewire: net: guard against rx buffer overflows
      03daa36f
    • Linus Torvalds's avatar
      Merge tag 'media/v4.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · d8d1721c
      Linus Torvalds authored
      Pull media fixes from Mauro Carvalho Chehab:
       "A series of fixup patches meant to fix the usage of DMA on stack, plus
        one warning fixup"
      
      * tag 'media/v4.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (32 commits)
        [media] radio-bcm2048: don't ignore errors
        [media] pctv452e: fix semicolon.cocci warnings
        [media] flexcop-usb: don't use stack for DMA
        [media] stk-webcam: don't use stack for DMA
        [media] s2255drv: don't use stack for DMA
        [media] cpia2_usb: don't use stack for DMA
        [media] digitv: handle error code on RC query
        [media] dw2102: return error if su3000_power_ctrl() fails
        [media] nova-t-usb2: handle error code on RC query
        [media] technisat-usb2: use DMA buffers for I2C transfers
        [media] pctv452e: don't call BUG_ON() on non-fatal error
        [media] pctv452e: don't do DMA on stack
        [media] nova-t-usb2: don't do DMA on stack
        [media] gp8psk: don't go past the buffer size
        [media] gp8psk: don't do DMA on stack
        [media] dtv5100: don't do DMA on stack
        [media] dtt200u: handle USB control message errors
        [media] dtt200u: don't do DMA on stack
        [media] dtt200u-fe: handle errors on USB control messages
        [media] dtt200u-fe: don't do DMA on stack
        ...
      d8d1721c
    • Linus Torvalds's avatar
      Merge tag 'pci-v4.9-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · 41e6410e
      Linus Torvalds authored
      Pull PCI fixes from Bjorn Helgaas:
      
       - fix for a Qualcomm driver issue that causes a use-before-set crash
      
       - fix for DesignWare iATU unroll support that causes external aborts
         when enabling the host bridge
      
      * tag 'pci-v4.9-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        PCI: designware: Check for iATU unroll support after initializing host
        PCI: qcom: Fix pp->dev usage before assignment
      41e6410e
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20161104' of git://git.infradead.org/linux-mtd · 785bcb40
      Linus Torvalds authored
      Pull MTD fixes from Brian Norris:
      
       - MAINTAINERS updates to reflect some new maintainers/submaintainers.
      
         We have some great volunteers who've been developing and reviewing
         already. We're going to try a group maintainership model, so
         eventually you'll probably see pull requests from people besides me.
      
       - NAND fixes from Boris:
          "Three simple fixes:
      
            - fix a non-critical bug in the gpmi driver
            - fix a bug in the 'automatic NAND timings selection' feature
              introduced in 4.9-rc1
            - fix a false positive uninitialized-var warning"
      
      * tag 'for-linus-20161104' of git://git.infradead.org/linux-mtd:
        mtd: mtk: avoid warning in mtk_ecc_encode
        mtd: nand: Fix data interface configuration logic
        mtd: nand: gpmi: disable the clocks on errors
        MAINTAINERS: add more people to the MTD maintainer team
        MAINTAINERS: add a maintainer for the SPI NOR subsystem
      785bcb40
    • Linus Torvalds's avatar
      Merge tag 'mmc-v4.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · d2997040
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
       "MMC host:
      
         - sdhci-msm: Fix error path in probe
         - dw_mmc-pltfm: Avoid NULL pointer dereference"
      
      * tag 'mmc-v4.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: sdhci-msm: Fix error return code in sdhci_msm_probe()
        mmc: dw_mmc-pltfm: fix the potential NULL pointer dereference
      d2997040
    • Linus Torvalds's avatar
      Merge tag 'gpio-v4.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · 594aef64
      Linus Torvalds authored
      Pull GPIO fixes from Linus Walleij:
       "Some GPIO fixes for the v4.9 series:
      
         - Fix a nasty file descriptor leak when getting line handles.
      
         - A fix for a cleanup that seemed innocent but created a problem for
           drivers instantiating several gpiochips for one single OF node.
      
         - Fix a unpredictable problem using irq_domain_simple() in the mvebu
           driver by converting it to a lineas irqdomain"
      
      * tag 'gpio-v4.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:
        gpio/mvebu: Use irq_domain_add_linear
        gpio: of: fix GPIO drivers with multiple gpio_chip for a single node
        gpio: GPIO_GET_LINE{HANDLE,EVENT}_IOCTL: Fix file descriptor leak
      594aef64
  4. Nov 05, 2016
    • Linus Torvalds's avatar
      Merge tag 'nfsd-4.9-1' of git://linux-nfs.org/~bfields/linux · fb415f22
      Linus Torvalds authored
      Pull nfsd bugfixes from Bruce Fields:
       "Fixes for some recent regressions including fallout from the vmalloc'd
        stack change (after which we can no longer encrypt stuff on the
        stack)"
      
      * tag 'nfsd-4.9-1' of git://linux-nfs.org/~bfields/linux:
        nfsd: Fix general protection fault in release_lock_stateid()
        svcrdma: backchannel cannot share a page for send and rcv buffers
        sunrpc: fix some missing rq_rbuffer assignments
        sunrpc: don't pass on-stack memory to sg_set_buf
        nfsd: move blocked lock handling under a dedicated spinlock
      fb415f22
    • Linus Torvalds's avatar
      Merge branch 'for-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 46d7cbb2
      Linus Torvalds authored
      Pull btrfs fixes from Chris Mason:
       "Some fixes that Dave Sterba collected.  We held off on these last week
        because I was focused on the memory corruption testing"
      
      * 'for-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: fix WARNING in btrfs_select_ref_head()
        Btrfs: remove some no-op casts
        btrfs: pass correct args to btrfs_async_run_delayed_refs()
        btrfs: make file clone aware of fatal signals
        btrfs: qgroup: Prevent qgroup->reserved from going subzero
        Btrfs: kill BUG_ON in do_relocation
      46d7cbb2
    • Linus Torvalds's avatar
      Merge branch 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs · bd30fac1
      Linus Torvalds authored
      Pull overlayfs fixes from Miklos Szeredi:
       "Fix two more POSIX ACL bugs introduced in 4.8 and add a missing fsync
        during copy up to prevent possible data loss"
      
      * 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
        ovl: fsync after copy-up
        ovl: fix get_acl() on tmpfs
        ovl: update S_ISGID when setting posix ACLs
      bd30fac1
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-for-v4.9-rc4' of git://people.freedesktop.org/~airlied/linux · d4c5f43d
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Fixes for amdgpu, radeon, intel, imx and virtio-gpu.
      
        This is a bit larger than I'd like, but I had some stuff I meant to
        send for -rc3 but was waiting for the PAT regression fix to land. So
        this is really fixes for rc3 and rc4 in one go.
      
        There are a set of fixes for an oops we've been seeing around MST
        display unplug, along with more suspend/resume and shutdown fixes for
        amdgpu, one power management follow on fix for nouveau, and set of imx
        fixes, and a single virtio-gpu regression fix"
      
      * tag 'drm-fixes-for-v4.9-rc4' of git://people.freedesktop.org/~airlied/linux: (54 commits)
        virtio-gpu: fix vblank events
        drm/nouveau/acpi: fix check for power resources support
        drm/i915: Fix SKL+ 90/270 degree rotated plane coordinate computation
        drm/i915: Remove two invalid warns
        drm/i915: Rotated view does not need a fence
        drm/i915/fbc: fix CFB size calculation for gen8+
        drm: i915: Wait for fences on new fb, not old
        drm/i915: Clean up DDI DDC/AUX CH sanitation
        drm/i915: Respect alternate_aux_channel for all DDI ports
        drm/i915/gen9: fix watermarks when using the pipe scaler
        drm/i915: Fix mismatched INIT power domain disabling during suspend
        drm/i915: fix a read size argument
        drm/i915: Use fence_write() from rpm resume
        drm/i915/gen9: fix DDB partitioning for multi-screen cases
        drm/i915: workaround sparse warning on variable length arrays
        drm/i915: keep declarations in i915_drv.h
        drm/amd/powerplay: fix bug get wrong evv voltage of Polaris.
        drm/amdgpu/si_dpm: workaround for SI kickers
        drm/radeon/si_dpm: workaround for SI kickers
        drm/amdgpu: fix s3 resume back, uvd dpm randomly can't disable.
        ...
      d4c5f43d
    • Niklas Cassel's avatar
      PCI: designware: Check for iATU unroll support after initializing host · 416379f9
      Niklas Cassel authored
      dw_pcie_iatu_unroll_enabled() reads a dbi_base register.  Reading any
      dbi_base register before pp->ops->host_init has been called causes
      "imprecise external abort" on platforms like ARTPEC-6, where the PCIe
      module is disabled at boot and first enabled in pp->ops->host_init.  Move
      dw_pcie_iatu_unroll_enabled() to dw_pcie_setup_rc(), since it is after
      pp->ops->host_init, but before pp->iatu_unroll_enabled is actually used.
      
      Fixes: a0601a47
      
       ("PCI: designware: Add iATU Unroll feature")
      Tested-by: default avatarJames Le Cuirot <chewi@gentoo.org>
      Signed-off-by: default avatarNiklas Cassel <niklas.cassel@axis.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarJoao Pinto <jpinto@synopsys.com>
      Acked-by: default avatarOlof Johansson <olof@lixom.net>
      416379f9
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 66cecb67
      Linus Torvalds authored
      Pull KVM updates from Paolo Bonzini:
       "One NULL pointer dereference, and two fixes for regressions introduced
        during the merge window.
      
        The rest are fixes for MIPS, s390 and nested VMX"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        kvm: x86: Check memopp before dereference (CVE-2016-8630)
        kvm: nVMX: VMCLEAR an active shadow VMCS after last use
        KVM: x86: drop TSC offsetting kvm_x86_ops to fix KVM_GET/SET_CLOCK
        KVM: x86: fix wbinvd_dirty_mask use-after-free
        kvm/x86: Show WRMSR data is in hex
        kvm: nVMX: Fix kernel panics induced by illegal INVEPT/INVVPID types
        KVM: document lock orders
        KVM: fix OOPS on flush_work
        KVM: s390: Fix STHYI buffer alignment for diag224
        KVM: MIPS: Precalculate MMIO load resume PC
        KVM: MIPS: Make ERET handle ERL before EXL
        KVM: MIPS: Fix lazy user ASID regenerate for SMP
      66cecb67
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 34c510b2
      Linus Torvalds authored
      Pull MIPS fixes from Ralf Baechle:
       "A set of MIPS fixes for 4.9:
      
         - lots of fixes for printk continuations
         - six fixes for FP related code.
         - fix max_low_pfn with disabled highmem
         - fix KASLR handling of NULL FDT and KASLR for generic kernels
         - fix build of compressed image
         - provide default mips_cpc_default_phys_base to ignore CPC
         - fix reboot on Malta"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
        MIPS: Fix max_low_pfn with disabled highmem
        MIPS: Correct MIPS I FP sigcontext layout
        MIPS: Fix ISA I/II FP signal context offsets
        MIPS: Remove FIR from ISA I FP signal context
        MIPS: Fix ISA I FP sigcontext access violation handling
        MIPS: Fix FCSR Cause bit handling for correct SIGFPE issue
        MIPS: ptrace: Also initialize the FP context on individual FCSR writes
        MIPS: dump_tlb: Fix printk continuations
        MIPS: Fix __show_regs() output
        MIPS: traps: Fix output of show_code
        MIPS: traps: Fix output of show_stacktrace
        MIPS: traps: Fix output of show_backtrace
        MIPS: Fix build of compressed image
        MIPS: generic: Fix KASLR for generic kernel.
        MIPS: KASLR: Fix handling of NULL FDT
        MIPS: Malta: Fixup reboot
        MIPS: CPC: Provide default mips_cpc_default_phys_base to ignore CPC
      34c510b2
    • Linus Torvalds's avatar
      Merge branch 'parisc-4.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · f7df76e6
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
       "The first three patches are trivial and add some required KERN_CONT,
        ignore the new pkey syscalls on parisc and use the LINUX_GATEWAY_ADDR
        define instead of hardcoded values.
      
        The two patches from Dave Anglin are important.
      
        The first one avoids trashing the sr2 and sr3 space registers in the
        Light-weight syscall path. Especially the usage of sr3 is critical
        since it may get trashed by the interrupt handler.
      
        The second patch is even more important and tagged for stable series.
        It protects one critical section in the syscall entry path by
        disabling local interrupts. Without disabling interrupts, the sr7
        space register may not be in sync with the current stack setup and
        thus an incoming hardware interrupt may destroy memory in random
        userspace areas"
      
      * 'parisc-4.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Ignore the pkey system calls for now
        parisc: Use LINUX_GATEWAY_ADDR define instead of hardcoded value
        parisc: Ensure consistent state when switching to kernel stack at syscall entry
        parisc: Avoid trashing sr2 and sr3 in LWS code
        parisc: use KERN_CONT when printing device inventory
      f7df76e6
    • Vladimir Zapolskiy's avatar
      i2c: core: fix NULL pointer dereference under race condition · 147b36d5
      Vladimir Zapolskiy authored
      
      
      Race condition between registering an I2C device driver and
      deregistering an I2C adapter device which is assumed to manage that
      I2C device may lead to a NULL pointer dereference due to the
      uninitialized list head of driver clients.
      
      The root cause of the issue is that the I2C bus may know about the
      registered device driver and thus it is matched by bus_for_each_drv(),
      but the list of clients is not initialized and commonly it is NULL,
      because I2C device drivers define struct i2c_driver as static and
      clients field is expected to be initialized by I2C core:
      
        i2c_register_driver()             i2c_del_adapter()
          driver_register()                 ...
            bus_add_driver()                ...
              ...                           bus_for_each_drv(..., __process_removed_adapter)
            ...                               i2c_do_del_adapter()
          ...                                   list_for_each_entry_safe(..., &driver->clients, ...)
          INIT_LIST_HEAD(&driver->clients);
      
      To solve the problem it is sufficient to do clients list head
      initialization before calling driver_register().
      
      The problem was found while using an I2C device driver with a sluggish
      registration routine on a bus provided by a physically detachable I2C
      master controller, but practically the oops may be reproduced under
      the race between arbitraty I2C device driver registration and managing
      I2C bus device removal e.g. by unbinding the latter over sysfs:
      
      % echo 21a4000.i2c > /sys/bus/platform/drivers/imx-i2c/unbind
        Unable to handle kernel NULL pointer dereference at virtual address 00000000
        Internal error: Oops: 17 [#1] SMP ARM
        CPU: 2 PID: 533 Comm: sh Not tainted 4.9.0-rc3+ #61
        Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
        task: e5ada400 task.stack: e4936000
        PC is at i2c_do_del_adapter+0x20/0xcc
        LR is at __process_removed_adapter+0x14/0x1c
        Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
        Control: 10c5387d  Table: 35bd004a  DAC: 00000051
        Process sh (pid: 533, stack limit = 0xe4936210)
        Stack: (0xe4937d28 to 0xe4938000)
        Backtrace:
        [<c0667be0>] (i2c_do_del_adapter) from [<c0667cc0>] (__process_removed_adapter+0x14/0x1c)
        [<c0667cac>] (__process_removed_adapter) from [<c0516998>] (bus_for_each_drv+0x6c/0xa0)
        [<c051692c>] (bus_for_each_drv) from [<c06685ec>] (i2c_del_adapter+0xbc/0x284)
        [<c0668530>] (i2c_del_adapter) from [<bf0110ec>] (i2c_imx_remove+0x44/0x164 [i2c_imx])
        [<bf0110a8>] (i2c_imx_remove [i2c_imx]) from [<c051a838>] (platform_drv_remove+0x2c/0x44)
        [<c051a80c>] (platform_drv_remove) from [<c05183d8>] (__device_release_driver+0x90/0x12c)
        [<c0518348>] (__device_release_driver) from [<c051849c>] (device_release_driver+0x28/0x34)
        [<c0518474>] (device_release_driver) from [<c0517150>] (unbind_store+0x80/0x104)
        [<c05170d0>] (unbind_store) from [<c0516520>] (drv_attr_store+0x28/0x34)
        [<c05164f8>] (drv_attr_store) from [<c0298acc>] (sysfs_kf_write+0x50/0x54)
        [<c0298a7c>] (sysfs_kf_write) from [<c029801c>] (kernfs_fop_write+0x100/0x214)
        [<c0297f1c>] (kernfs_fop_write) from [<c0220130>] (__vfs_write+0x34/0x120)
        [<c02200fc>] (__vfs_write) from [<c0221088>] (vfs_write+0xa8/0x170)
        [<c0220fe0>] (vfs_write) from [<c0221e74>] (SyS_write+0x4c/0xa8)
        [<c0221e28>] (SyS_write) from [<c0108a20>] (ret_fast_syscall+0x0/0x1c)
      
      Signed-off-by: default avatarVladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Cc: stable@kernel.org
      147b36d5
  5. Nov 04, 2016
    • James Hogan's avatar
      MIPS: Fix max_low_pfn with disabled highmem · 16a767ec
      James Hogan authored
      
      
      When low memory doesn't reach HIGHMEM_START (e.g. up to 256MB at PA=0 is
      common) and highmem is present above HIGHMEM_START (e.g. on Malta the
      RAM overlayed by the IO region is aliased at PA=0x90000000), max_low_pfn
      will be initially calculated very large and then clipped down to
      HIGHMEM_START.
      
      This causes crashes when reading /sys/kernel/mm/page_idle/bitmap
      (i.e. CONFIG_IDLE_PAGE_TRACKING=y) when highmem is disabled. pfn_valid()
      will compare against max_mapnr which is derived from max_low_pfn when
      there is no highend_pfn set up, and will return true for PFNs right up
      to HIGHMEM_START, even though they are beyond the end of low memory and
      no page structs will actually exist for these PFNs.
      
      This is fixed by skipping high memory regions when initially calculating
      max_low_pfn if highmem is disabled, so it doesn't get clipped too high.
      We also clip regions which overlap the highmem boundary when highmem is
      disabled, so that max_pfn doesn't extend into highmem either.
      
      Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/14490/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      16a767ec
    • Maciej W. Rozycki's avatar
      MIPS: Correct MIPS I FP sigcontext layout · f92722dc
      Maciej W. Rozycki authored
      Complement commit 80cbfad7
      
       ("MIPS: Correct MIPS I FP context
      layout") and correct the way Floating Point General registers are stored
      in a signal context with MIPS I hardware.
      
      Use the S.D and L.D assembly macros to have pairs of SWC1 instructions
      and pairs of LWC1 instructions produced, respectively, in an arrangement
      which makes the memory representation of floating-point data passed
      compatible with that used by hardware SDC1 and LDC1 instructions, where
      available, regardless of the hardware endianness used.  This matches the
      layout used by r4k_fpu.S, ensuring run-time compatibility for MIPS I
      software across all o32 hardware platforms.
      
      Define an EX2 macro to handle exceptions from both hardware instructions
      implicitly produced from S.D and L.D assembly macros.
      
      Signed-off-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14477/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      f92722dc
    • Maciej W. Rozycki's avatar
      MIPS: Fix ISA I/II FP signal context offsets · 758ef0a9
      Maciej W. Rozycki authored
      Fix a regression introduced with commit 2db9ca0a
      
       ("MIPS: Use struct
      mips_abi offsets to save FP context") for MIPS I/I FP signal contexts,
      by converting save/restore code to the updated internal API.  Start FGR
      offsets from 0 rather than SC_FPREGS from $a0 and use $a1 rather than
      the offset of SC_FPC_CSR from $a0 for the Floating Point Control/Status
      Register (FCSR).
      
      Document the new internal API and adjust assembly code formatting for
      consistency.
      
      Signed-off-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14476/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      758ef0a9
    • Maciej W. Rozycki's avatar
      MIPS: Remove FIR from ISA I FP signal context · 6daaa326
      Maciej W. Rozycki authored
      Complement commit e50c0a8f
      
       ("Support the MIPS32 / MIPS64 DSP ASE.")
      and remove the Floating Point Implementation Register (FIR) from the FP
      register set recorded in a signal context with MIPS I processors too, in
      line with the change applied to r4k_fpu.S.
      
      The `sc_fpc_eir' slot is unused according to our current ABI and the FIR
      register is read-only and always directly accessible from user software.
      
      [ralf@linux-mips.org: This is also required because the next commit depends
      on it.]
      
      Signed-off-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14475/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      6daaa326
    • Maciej W. Rozycki's avatar
      MIPS: Fix ISA I FP sigcontext access violation handling · 35938a00
      Maciej W. Rozycki authored
      
      
      Complement commit 0ae8dceaebe3 ("Merge with 2.3.10.") and use the local
      `fault' handler to recover from FP sigcontext access violation faults,
      like corresponding code does in r4k_fpu.S.  The `bad_stack' handler is
      in syscall.c and is not suitable here as we want to propagate the error
      condition up through the caller rather than killing the thread outright.
      
      Signed-off-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14474/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      35938a00
    • Maciej W. Rozycki's avatar
      MIPS: Fix FCSR Cause bit handling for correct SIGFPE issue · 5a1aca44
      Maciej W. Rozycki authored
      Sanitize FCSR Cause bit handling, following a trail of past attempts:
      
      * commit 42495484 ("MIPS: ptrace: Fix FP context restoration FCSR
      regression"),
      
      * commit 443c4403 ("MIPS: Always clear FCSR cause bits after
      emulation"),
      
      * commit 64bedffe ("MIPS: Clear [MSA]FPE CSR.Cause after
      notify_die()"),
      
      * commit b1442d39
      
       ("MIPS: Prevent user from setting FCSR cause
      bits"),
      
      * commit b54d2901517d ("Properly handle branch delay slots in connection
      with signals.").
      
      Specifically do not mask these bits out in ptrace(2) processing and send
      a SIGFPE signal instead whenever a matching pair of an FCSR Cause and
      Enable bit is seen as execution of an affected context is about to
      resume.  Only then clear Cause bits, and even then do not clear any bits
      that are set but masked with the respective Enable bits.  Adjust Cause
      bit clearing throughout code likewise, except within the FPU emulator
      proper where they are set according to IEEE 754 exceptions raised as the
      operation emulated executed.  Do so so that any IEEE 754 exceptions
      subject to their default handling are recorded like with operations
      executed by FPU hardware.
      
      Signed-off-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14460/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      5a1aca44
    • Maciej W. Rozycki's avatar
      MIPS: ptrace: Also initialize the FP context on individual FCSR writes · c9e56039
      Maciej W. Rozycki authored
      Complement commit ac9ad83b
      
       ("MIPS: prevent FP context set via ptrace
      being discarded") and also initialize the FP context whenever FCSR alone
      is written with a PTRACE_POKEUSR request addressing FPC_CSR, rather than
      along with the full FPU register set in the case of the PTRACE_SETFPREGS
      request.
      
      Signed-off-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14459/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      c9e56039
    • James Hogan's avatar
      MIPS: dump_tlb: Fix printk continuations · 8a98495c
      James Hogan authored
      Since commit 4bcc595c
      
       ("printk: reinstate KERN_CONT for printing
      continuation lines") the output from TLB dumps on MIPS has been
      pretty unreadable due to the lack of KERN_CONT markers. Use pr_cont to
      provide the appropriate markers & restore the expected output.
      
      Continuation is also used for the second line of each TLB entry printed
      in dump_tlb.c even though it has a newline, since it is a continuation
      of the interpretation of the same TLB entry. For example:
      
      [   46.371884] Index:  0 pgmask=16kb va=77654000 asid=73 gid=00
              [ri=0 xi=0 pa=ffc18000 c=5 d=0 v=1 g=0] [ri=0 xi=0 pa=ffc1c000 c=5 d=0 v=1 g=0]
      [   46.385380] Index: 12 pgmask=16kb va=004b4000 asid=73 gid=00
              [ri=0 xi=0 pa=00000000 c=0 d=0 v=0 g=0] [ri=0 xi=0 pa=ffb00000 c=5 d=1 v=1 g=0]
      
      Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Cc: Maciej W. Rozycki <macro@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/14444/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      8a98495c
    • Paul Burton's avatar
      MIPS: Fix __show_regs() output · 752f5499
      Paul Burton authored
      Since commit 4bcc595c
      
       ("printk: reinstate KERN_CONT for printing
      continuation lines") the output from __show_regs() on MIPS has been
      pretty unreadable due to the lack of KERN_CONT markers. Use pr_cont to
      provide the appropriate markers & restore the expected register output.
      
      Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Cc: Maciej W. Rozycki <macro@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14432/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      752f5499
    • Matt Redfearn's avatar
      MIPS: traps: Fix output of show_code · 41000c58
      Matt Redfearn authored
      Since commit 4bcc595c
      
       ("printk: reinstate KERN_CONT for printing
      continuation lines") the output from show_code on MIPS has been
      pretty unreadable due to the lack of KERN_CONT markers. Use pr_cont to
      provide the appropriate markers & restore the expected output.
      
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Cc: Maciej W. Rozycki <macro@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14431/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      41000c58
    • Matt Redfearn's avatar
      MIPS: traps: Fix output of show_stacktrace · fe4e09e7
      Matt Redfearn authored
      Since commit 4bcc595c
      
       ("printk: reinstate KERN_CONT for printing
      continuation lines") the output from show_stacktrace on MIPS has been
      pretty unreadable due to the lack of KERN_CONT markers. Use pr_cont to
      provide the appropriate markers & restore the expected output. Also
      start a new line with printk such that the presence of timing
      information does not interfere with output.
      
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Cc: Maciej W. Rozycki <macro@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14430/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      fe4e09e7
    • Matt Redfearn's avatar
      MIPS: traps: Fix output of show_backtrace · bcf084de
      Matt Redfearn authored
      Since commit 4bcc595c
      
       ("printk: reinstate KERN_CONT for printing
      continuation lines") the output from show_backtrace on MIPS has been
      pretty unreadable due to the lack of KERN_CONT markers. Use pr_cont to
      provide the appropriate markers & restore the expected output.
      
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Cc: Maciej W. Rozycki <macro@imgtec.com>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Paul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14429/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      bcf084de
    • Matt Redfearn's avatar
      MIPS: Fix build of compressed image · 818f38c5
      Matt Redfearn authored
      
      
      Changes introduced to arch/mips/Makefile for the generic kernel resulted
      in build errors when making a compressed image if platform-y has multiple
      values, like this:
      
      make[2]: *** No rule to make target `alchemy/'.
      make[1]: *** [vmlinuz] Error 2
      make[1]: Target `_all' not remade because of errors.
      make: *** [sub-make] Error 2
      make: Target `_all' not remade because of errors.
      
      Fix this by quoting $(platform-y) as it is passed to the Makefile in
      arch/mips/boot/compressed/Makefile
      
      Reported-by: default avatarkernelci.org bot <bot@kernelci.org>
      Link: https://storage.kernelci.org/next/next-20161017/mips-gpr_defconfig/build.log
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Reviewed-by: default avatarPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14405/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      818f38c5
    • Matt Redfearn's avatar
      MIPS: generic: Fix KASLR for generic kernel. · 9a59061c
      Matt Redfearn authored
      The KASLR code requires that the plat_get_fdt() function return the
      address of the device tree, and it must be available early in the boot,
      before prom_init() is called. Move the code determining the address of
      the device tree into plat_get_fdt, and call that from prom_init().
      
      The fdt pointer will be set up by plat_get_fdt() called from
      relocate_kernel initially and once the relocated kernel has started,
      prom_init() will use it again to determine the address in the relocated
      image.
      
      Fixes: eed0eabd
      
       ("MIPS: generic: Introduce generic DT-based board support")
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Reviewed-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Reviewed-by: default avatarPaul Burton <paul.burton@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14415/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      9a59061c
    • Matt Redfearn's avatar
      MIPS: KASLR: Fix handling of NULL FDT · 47366979
      Matt Redfearn authored
      If platform code returns a NULL pointer to the FDT, initial_boot_params
      will not get set to a valid pointer and attempting to find the /chosen
      node in it will cause a NULL pointer dereference and the kernel to crash
      immediately on startup - with no output to the console.
      
      Fix this by checking that initial_boot_params is valid before using it.
      
      Fixes: 405bc8fd
      
       ("MIPS: Kernel: Implement KASLR using CONFIG_RELOCATABLE")
      Cc: stable@vger.kernel.org # 4.7+
      Signed-off-by: default avatarMatt Redfearn <matt.redfearn@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/14414/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      47366979
    • Paul Burton's avatar
      MIPS: Malta: Fixup reboot · 93032e31
      Paul Burton authored
      Commit 10b6ea09
      
       ("MIPS: Malta: Use syscon-reboot driver to reboot")
      converted the Malta board to use the generic syscon-reboot driver to
      handle reboots, but incorrectly used the value 0x4d rather than 0x42 as
      the magic to write to the reboot register.
      
      I also incorrectly believed that syscon/regmap would default to native
      endianness, but this isn't the case. Force this by specifying with a
      native-endian property in the devicetree.
      
      Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
      Fixes: 10b6ea09
      
       ("MIPS: Malta: Use syscon-reboot driver to reboot")
      Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Cc: linux-mips@linux-mips.org
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Tested-by: default avatarMaciej W. Rozycki <macro@imgtec.com>
      Patchwork: https://patchwork.linux-mips.org/patch/14396/
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      93032e31