1. 03 6月, 2015 2 次提交
    • F
      Btrfs: incremental send, check if orphanized dir inode needs delayed rename · 8b191a68
      Filipe Manana 提交于
      If a directory inode is orphanized, because some inode previously
      processed has a new name that collides with the old name of the current
      inode, we need to check if it needs its rename operation delayed too,
      as its ancestor-descendent relationship with some other inode might
      have been reversed between the parent and send snapshots and therefore
      its rename operation needs to happen after that other inode is renamed.
      
      For example, for the following reproducer where this is needed (provided
      by Robbie Ko):
      
        $ mkfs.btrfs -f /dev/sdb
        $ mount /dev/sdb /mnt
        $ mkfs.btrfs -f /dev/sdc
        $ mount /dev/sdc /mnt2
      
        $ mkdir -p /mnt/data/n1/n2
        $ mkdir /mnt/data/n4
        $ mkdir -p /mnt/data/t6/t7
        $ mkdir /mnt/data/t5
        $ mkdir /mnt/data/t7
        $ mkdir /mnt/data/n4/t2
        $ mkdir /mnt/data/t4
        $ mkdir /mnt/data/t3
        $ mv /mnt/data/t7 /mnt/data/n4/t2
        $ mv /mnt/data/t4 /mnt/data/n4/t2/t7
        $ mv /mnt/data/t5 /mnt/data/n4/t2/t7/t4
        $ mv /mnt/data/t6 /mnt/data/n4/t2/t7/t4/t5
        $ mv /mnt/data/n1/n2 /mnt/data/n4/t2/t7/t4/t5/t6
        $ mv /mnt/data/n1 /mnt/data/n4/t2/t7/t4/t5/t6
        $ mv /mnt/data/n4/t2/t7/t4/t5/t6/t7 /mnt/data/n4/t2/t7/t4/t5/t6/n2
        $ mv /mnt/data/t3 /mnt/data/n4/t2/t7/t4/t5/t6/n2/t7
      
        $ btrfs subvolume snapshot -r /mnt /mnt/snap1
      
        $ mv /mnt/data/n4/t2/t7/t4/t5/t6/n1 /mnt/data/n4
        $ mv /mnt/data/n4/t2 /mnt/data/n4/n1
        $ mv /mnt/data/n4/n1/t2/t7/t4/t5/t6/n2 /mnt/data/n4/n1/t2
        $ mv /mnt/data/n4/n1/t2/n2/t7/t3 /mnt/data/n4/n1/t2
        $ mv /mnt/data/n4/n1/t2/t7/t4/t5/t6 /mnt/data/n4/n1/t2
        $ mv /mnt/data/n4/n1/t2/t7/t4 /mnt/data/n4/n1/t2/t6
        $ mv /mnt/data/n4/n1/t2/t7 /mnt/data/n4/n1/t2/t3
        $ mv /mnt/data/n4/n1/t2/n2/t7 /mnt/data/n4/n1/t2
      
        $ btrfs subvolume snapshot -r /mnt /mnt/snap2
      
        $ btrfs send /mnt/snap1 | btrfs receive /mnt2
        $ btrfs send -p /mnt/snap1 /mnt/snap2 | btrfs receive /mnt2
        ERROR: send ioctl failed with -12: Cannot allocate memory
      
      Where the parent snapshot directory hierarchy is the following:
      
        .                                                        (ino 256)
        |-- data/                                                (ino 257)
              |-- n4/                                            (ino 260)
                   |-- t2/                                       (ino 265)
                        |-- t7/                                  (ino 264)
                             |-- t4/                             (ino 266)
                                  |-- t5/                        (ino 263)
                                       |-- t6/                   (ino 261)
                                            |-- n1/              (ino 258)
                                            |-- n2/              (ino 259)
                                                 |-- t7/         (ino 262)
                                                      |-- t3/    (ino 267)
      
      And the send snapshot's directory hierarchy is the following:
      
        .                                                        (ino 256)
        |-- data/                                                (ino 257)
              |-- n4/                                            (ino 260)
                   |-- n1/                                       (ino 258)
                        |-- t2/                                  (ino 265)
                             |-- n2/                             (ino 259)
                             |-- t3/                             (ino 267)
                             |    |-- t7                         (ino 264)
                             |
                             |-- t6/                             (ino 261)
                             |    |-- t4/                        (ino 266)
                             |         |-- t5/                   (ino 263)
                             |
                             |-- t7/                             (ino 262)
      
      While processing inode 262 we orphanize inode 264 and later attempt
      to rename inode 264 to its new name/location, which resulted in building
      an incorrect destination path string for the rename operation with the
      value "data/n4/t2/t7/t4/t5/t6/n2/t7/t3/t7". This rename operation must
      have been done only after inode 267 is processed and renamed, as the
      ancestor-descendent relationship between inodes 264 and 267 was reversed
      between both snapshots, because otherwise it results in an infinite loop
      when building the path string for inode 264 when we are processing an
      inode with a number larger than 264. That loop is the following:
      
        start inode 264, send progress of 265 for example
        parent of 264 -> 267
        parent of 267 -> 262
        parent of 262 -> 259
        parent of 259 -> 261
        parent of 261 -> 263
        parent of 263 -> 266
        parent of 266 -> 264
          |--> back to first iteration while current path string length
               is <= PATH_MAX, and fail with -ENOMEM otherwise
      
      So fix this by making the check if we need to delay a directory rename
      regardless of the current inode having been orphanized or not.
      
      A test case for fstests follows soon.
      
      Thanks to Robbie Ko for providing a reproducer for this problem.
      Reported-by: NRobbie Ko <robbieko@synology.com>
      Signed-off-by: NFilipe Manana <fdmanana@suse.com>
      8b191a68
    • F
      Btrfs: incremental send, don't delay directory renames unnecessarily · 80aa6027
      Filipe Manana 提交于
      Even though we delay the rename of directories when they become
      descendents of other directories that were also renamed in the send
      root to prevent infinite path build loops, we were doing it in cases
      where this was not needed and was actually harmful resulting in
      infinite path build loops as we ended up with a circular dependency
      of delayed directory renames.
      
      Consider the following reproducer:
      
        $ mkfs.btrfs -f /dev/sdb
        $ mount /dev/sdb /mnt
        $ mkfs.btrfs -f /dev/sdc
        $ mount /dev/sdc /mnt2
      
        $ mkdir /mnt/data
        $ mkdir /mnt/data/n1
        $ mkdir /mnt/data/n1/n2
        $ mkdir /mnt/data/n4
        $ mkdir /mnt/data/n1/n2/p1
        $ mkdir /mnt/data/n1/n2/p1/p2
        $ mkdir /mnt/data/t6
        $ mkdir /mnt/data/t7
        $ mkdir -p /mnt/data/t5/t7
        $ mkdir /mnt/data/t2
        $ mkdir /mnt/data/t4
        $ mkdir -p /mnt/data/t1/t3
        $ mkdir /mnt/data/p1
        $ mv /mnt/data/t1 /mnt/data/p1
        $ mkdir -p /mnt/data/p1/p2
        $ mv /mnt/data/t4 /mnt/data/p1/p2/t1
        $ mv /mnt/data/t5 /mnt/data/n4/t5
        $ mv /mnt/data/n1/n2/p1/p2 /mnt/data/n4/t5/p2
        $ mv /mnt/data/t7 /mnt/data/n4/t5/p2/t7
        $ mv /mnt/data/t2 /mnt/data/n4/t1
        $ mv /mnt/data/p1 /mnt/data/n4/t5/p2/p1
        $ mv /mnt/data/n1/n2 /mnt/data/n4/t5/p2/p1/p2/n2
        $ mv /mnt/data/n4/t5/p2/p1/p2/t1 /mnt/data/n4/t5/p2/p1/p2/n2/t1
        $ mv /mnt/data/n4/t5/t7 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t7
        $ mv /mnt/data/n4/t5/p2/p1/t1/t3 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t3
        $ mv /mnt/data/n4/t5/p2/p1/p2/n2/p1 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t7/p1
        $ mv /mnt/data/t6 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t3/t5
        $ mv /mnt/data/n4/t5/p2/p1/t1 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t3/t1
        $ mv /mnt/data/n1 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t7/p1/n1
      
        $ btrfs subvolume snapshot -r /mnt /mnt/snap1
      
        $ mv /mnt/data/n4/t1 /mnt/data/n4/t5/p2/p1/p2/n2/t1/t7/p1/t1
        $ mv /mnt/data/n4/t5/p2/p1/p2/n2/t1 /mnt/data/n4/
        $ mv /mnt/data/n4/t5/p2/p1/p2/n2 /mnt/data/n4/t1/n2
        $ mv /mnt/data/n4/t1/t7/p1 /mnt/data/n4/t1/n2/p1
        $ mv /mnt/data/n4/t1/t3/t1 /mnt/data/n4/t1/n2/t1
        $ mv /mnt/data/n4/t1/t3 /mnt/data/n4/t1/n2/t1/t3
        $ mv /mnt/data/n4/t5/p2/p1/p2 /mnt/data/n4/t1/n2/p1/p2
        $ mv /mnt/data/n4/t1/t7 /mnt/data/n4/t1/n2/p1/t7
        $ mv /mnt/data/n4/t5/p2/p1 /mnt/data/n4/t1/n2/p1/p2/p1
        $ mv /mnt/data/n4/t1/n2/t1/t3/t5 /mnt/data/n4/t1/n2/p1/p2/t5
        $ mv /mnt/data/n4/t5 /mnt/data/n4/t1/n2/p1/p2/p1/t5
        $ mv /mnt/data/n4/t1/n2/p1/p2/p1/t5/p2 /mnt/data/n4/t1/n2/p1/p2/p1/p2
        $ mv /mnt/data/n4/t1/n2/p1/p2/p1/p2/t7 /mnt/data/n4/t1/t7
      
        $ btrfs subvolume snapshot -r /mnt /mnt/snap2
      
        $ btrfs send /mnt/snap1 | btrfs receive /mnt2
        $ btrfs send -p /mnt/snap1 /mnt/snap2 | btrfs receive -vv /mnt2
        ERROR: send ioctl failed with -12: Cannot allocate memory
      
      This reproducer resulted in an infinite path build loop when building the
      path for inode 266 because the following circular dependency of delayed
      directory renames was created:
      
         ino 272 <- ino 261 <- ino 259 <- ino 268 <- ino 267 <- ino 261
      
      Where the notation "X <- Y" means the rename of inode X is delayed by the
      rename of inode Y (X will be renamed after Y is renamed). This resulted
      in an infinite path build loop of inode 266 because that inode has inode
      261 as an ancestor in the send root and inode 261 is in the circular
      dependency of delayed renames listed above.
      
      Fix this by not delaying the rename of a directory inode if an ancestor of
      the inode in the send root, which has a delayed rename operation, is not
      also a descendent of the inode in the parent root.
      
      Thanks to Robbie Ko for sending the reproducer example.
      A test case for xfstests follows soon.
      Reported-by: NRobbie Ko <robbieko@synology.com>
      Signed-off-by: NFilipe Manana <fdmanana@suse.com>
      80aa6027
  2. 01 6月, 2015 7 次提交
    • L
      Linux 4.1-rc6 · c65b99f0
      Linus Torvalds 提交于
      c65b99f0
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 8ba64dc3
      Linus Torvalds 提交于
      Pull vfs fix from Al Viro:
       "Off-by-one in d_walk()/__dentry_kill() race fix.
      
        It's very hard to hit; possible in the same conditions as the original
        bug, except that you need the skipped branch to contain all the
        remaining evictables, so that the d_walk()-calling loop in
        d_invalidate() decides there's nothing more to do and doesn't go for
        another pass - otherwise that next pass will sweep the sucker.
      
        So it's not too urgent, but seeing that the fix is obvious and the
        original commit has spread into all -stable branches..."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        d_walk() might skip too much
      8ba64dc3
    • L
      Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · 36a8b9a7
      Linus Torvalds 提交于
      Pull ARM fixes from Russell King:
       "Three fixes this time around:
      
         - fix a memory leak which occurs when probing performance monitoring
           unit interrupts
      
         - fix handling of non-PMD aligned end of RAM causing boot failures
      
         - fix missing syscall trace exit path with syscall tracing enabled
           causing a kernel oops in the audit code"
      
      * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: 8357/1: perf: fix memory leak when probing PMU PPIs
        ARM: fix missing syscall trace exit
        ARM: 8356/1: mm: handle non-pmd-aligned end of RAM
      36a8b9a7
    • L
      Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/ralf/linux · e4ca714b
      Linus Torvalds 提交于
      Pull MIPS fixes from Ralf Baechle:
       "MIPS fixes for 4.1 all across the tree"
      
      * 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/ralf/linux:
        MIPS: strnlen_user.S: Fix a CPU_DADDI_WORKAROUNDS regression
        MIPS: BMIPS: Fix bmips_wr_vec()
        MIPS: ath79: fix build problem if CONFIG_BLK_DEV_INITRD is not set
        MIPS: Fuloong 2E: Replace CONFIG_USB_ISP1760_HCD by CONFIG_USB_ISP1760
        MIPS: irq: Use DECLARE_BITMAP
        ttyFDC: Fix to use native endian MMIO reads
        MIPS: Fix CDMM to use native endian MMIO reads
      e4ca714b
    • L
      Merge branch 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux · 50f5a1ee
      Linus Torvalds 提交于
      Pull turbostat tool fixes from Len Brown:
       "Just one minor kernel dependency in this batch -- added a #define to
        msr-index.h"
      
      * 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
        tools/power turbostat: update version number to 4.7
        tools/power turbostat: allow running without cpu0
        tools/power turbostat: correctly decode of ENERGY_PERFORMANCE_BIAS
        tools/power turbostat: enable turbostat to support Knights Landing (KNL)
        tools/power turbostat: correctly display more than 2 threads/core
      50f5a1ee
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · dae8f283
      Linus Torvalds 提交于
      Pull SCSI target fixes from Nicholas Bellinger:
       "These are mostly minor fixes, with the exception of the following that
        address fall-out from recent v4.1-rc1 changes:
      
         - regression fix related to the big fabric API registration changes
           and configfs_depend_item() usage, that required cherry-picking one
           of HCH's patches from for-next to address the issue for v4.1 code.
      
         - remaining TCM-USER -v2 related changes to enforce full CDB
           passthrough from Andy + Ilias.
      
        Also included is a target_core_pscsi driver fix from Andy that
        addresses a long standing issue with a Scsi_Host reference being
        leaked on PSCSI device shutdown"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        iser-target: Fix error path in isert_create_pi_ctx()
        target: Use a PASSTHROUGH flag instead of transport_types
        target: Move passthrough CDB parsing into a common function
        target/user: Only support full command pass-through
        target/user: Update example code for new ABI requirements
        target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST
        target: Fix se_tpg_tfo->tf_subsys regression + remove tf_subsystem
        target: Drop signal_pending checks after interruptible lock acquire
        target: Add missing parentheses
        target: Fix bidi command handling
        target/user: Disallow full passthrough (pass_level=0)
        ISCSI: fix minor memory leak
      dae8f283
    • L
      Merge tag 'hwmon-for-linus-v4.1-rc6' of... · 30a5f118
      Linus Torvalds 提交于
      Merge tag 'hwmon-for-linus-v4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
       "Some late hwmon patches, all headed for -stable
      
         - fix sysfs attribute initialization in nct6775 and nct6683 drivers
      
         - do not attempt to auto-detect tmp435 on I2C address 0x37
      
         - ensure iio channel is of type IIO_VOLTAGE in ntc_thermistor driver"
      
      * tag 'hwmon-for-linus-v4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (nct6683) Add missing sysfs attribute initialization
        hwmon: (nct6775) Add missing sysfs attribute initialization
        hwmon: (tmp401) Do not auto-detect chip on I2C address 0x37
        hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE
      30a5f118
  3. 31 5月, 2015 7 次提交
  4. 30 5月, 2015 17 次提交
    • G
      hwmon: (nct6683) Add missing sysfs attribute initialization · c7bd6dc3
      Guenter Roeck 提交于
      The following error message is seen when loading the nct6683 driver
      with DEBUG_LOCK_ALLOC enabled.
      
      BUG: key ffff88040b2f0030 not in .data!
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 186 at kernel/locking/lockdep.c:2988
      				lockdep_init_map+0x469/0x630()
      DEBUG_LOCKS_WARN_ON(1)
      
      Caused by a missing call to sysfs_attr_init() when initializing
      sysfs attributes.
      Reported-by: NAlexey Orishko <alexey.orishko@gmail.com>
      Reviewed-by: NJean Delvare <jdelvare@suse.de>
      Cc: stable@vger.kernel.org # v3.18+
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      c7bd6dc3
    • G
      hwmon: (nct6775) Add missing sysfs attribute initialization · 1b63bf61
      Guenter Roeck 提交于
      The following error message is seen when loading the nct6775 driver
      with DEBUG_LOCK_ALLOC enabled.
      
      BUG: key ffff88040b2f0030 not in .data!
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 186 at kernel/locking/lockdep.c:2988
      				lockdep_init_map+0x469/0x630()
      DEBUG_LOCKS_WARN_ON(1)
      
      Caused by a missing call to sysfs_attr_init() when initializing
      sysfs attributes.
      Reported-by: NAlexey Orishko <alexey.orishko@gmail.com>
      Reviewed-by: NJean Delvare <jdelvare@suse.de>
      Cc: stable@vger.kernel.org # v3.12+
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      1b63bf61
    • L
      Merge tag 'acpi-pci-4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · aaa20fc2
      Linus Torvalds 提交于
      Pull PCI / ACPI fix from Rafael Wysocki:
       "This fixes a bug uncovered by a recent driver core change that
        modified the implementation of the ACPI_COMPANION_SET() macro to
        strictly rely on its second argument to be either NULL or a valid
        pointer to struct acpi_device.
      
        As it turns out, pcibios_root_bridge_prepare() on x86 and ia64 works
        with the assumption that the only code path calling pci_create_root_bus()
        is pci_acpi_scan_root() and therefore the sysdata argument passed to
        it will always match the expectations of pcibios_root_bridge_prepare().
      
        That need not be the case, however, and in particular it is not the
        case for the Xen pcifront driver that passes a pointer to its own
        private data strcture as sysdata to pci_scan_bus_parented() which then
        passes it to pci_create_root_bus() and it ends up being used incorrectly
        by pcibios_root_bridge_prepare()"
      
      * tag 'acpi-pci-4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PCI / ACPI: Do not set ACPI companions for host bridges with parents
      aaa20fc2
    • L
      Merge tag 'xfs-for-linus-4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs · 1be44e23
      Linus Torvalds 提交于
      Pull xfs fixes from Dave Chinner:
       "This is a little larger than I'd like late in the release cycle, but
        all the fixes are for regressions introduced in the 4.1-rc1 merge, or
        are needed back in -stable kernels fairly quickly as they are
        filesystem corruption or userspace visible correctness issues.
      
        Changes in this update:
      
         - regression fix for new rename whiteout code
      
         - regression fixes for new superblock generic per-cpu counter code
      
         - fix for incorrect error return sign introduced in 3.17
      
         - metadata corruption fixes that need to go back to -stable kernels"
      
      * tag 'xfs-for-linus-4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs:
        xfs: fix broken i_nlink accounting for whiteout tmpfile inode
        xfs: xfs_iozero can return positive errno
        xfs: xfs_attr_inactive leaves inconsistent attr fork state behind
        xfs: extent size hints can round up extents past MAXEXTLEN
        xfs: inode and free block counters need to use __percpu_counter_compare
        percpu_counter: batch size aware __percpu_counter_compare()
        xfs: use percpu_counter_read_positive for mp->m_icount
      1be44e23
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 2a645171
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Arnd Bergmann:
       "Two weeks worth of small bug fixes this time, nothing sticking out
        this time:
      
         - one defconfig change to adapt to a modified Kconfig symbol
      
         - two fixes for i.MX for backwards compatibility with older DT files
           that was accidentally broken
      
         - one regression fix for irq handling on pxa
      
         - three small dt files on omap, and one each for imx and exynos"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: multi_v7_defconfig: Replace CONFIG_USB_ISP1760_HCD by CONFIG_USB_ISP1760
        ARM: imx6: gpc: don't register power domain if DT data is missing
        ARM: imx6: allow booting with old DT
        ARM: dts: set display clock correctly for exynos4412-trats2
        ARM: pxa: pxa_cplds: signedness bug in probe
        ARM: dts: Fix WLAN interrupt line for AM335x EVM-SK
        ARM: dts: omap3-devkit8000: Fix NAND DT node
        ARM: dts: am335x-boneblack: disable RTC-only sleep
        ARM: dts: fix imx27 dtb build rule
        ARM: dts: imx27: only map 4 Kbyte for fec registers
      2a645171
    • L
      Merge tag 'dm-4.1-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 0f1e5b5d
      Linus Torvalds 提交于
      Pull device-mapper fixes from Mike Snitzer:
       "Quite a few fixes for DM's blk-mq support thanks to extra DM multipath
        testing from Junichi Nomura and Bart Van Assche.
      
        Also fix a casting bug in dm_merge_bvec() that could cause only a
        single page to be added to a bio (Joe identified this while testing
        dm-cache writeback)"
      
      * tag 'dm-4.1-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm: fix casting bug in dm_merge_bvec()
        dm: fix reload failure of 0 path multipath mapping on blk-mq devices
        dm: fix false warning in free_rq_clone() for unmapped requests
        dm: requeue from blk-mq dm_mq_queue_rq() using BLK_MQ_RQ_QUEUE_BUSY
        dm mpath: fix leak of dm_mpath_io structure in blk-mq .queue_rq error path
        dm: fix NULL pointer when clone_and_map_rq returns !DM_MAPIO_REMAPPED
        dm: run queue on re-queue
      0f1e5b5d
    • G
      hwmon: (tmp401) Do not auto-detect chip on I2C address 0x37 · 9aecac04
      Guenter Roeck 提交于
      I2C address 0x37 may be used by EEPROMs, which can result in false
      positives. Do not attempt to detect a chip at this address.
      Reviewed-by: NJean Delvare <jdelvare@suse.de>
      Cc: stable@vger.kernel.org # v4.0+
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      9aecac04
    • L
      Merge branch 'akpm' (patches from Andrew) · c2102f3d
      Linus Torvalds 提交于
      Merge misc fixes from Andrew Morton:
       "10 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        scripts/gdb: fix lx-lsmod refcnt
        omfs: fix potential integer overflow in allocator
        omfs: fix sign confusion for bitmap loop counter
        omfs: set error return when d_make_root() fails
        fs, omfs: add NULL terminator in the end up the token list
        MAINTAINERS: update CAPABILITIES pattern
        fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings
        tracing/mm: don't trace mm_page_pcpu_drain on offline cpus
        tracing/mm: don't trace mm_page_free on offline cpus
        tracing/mm: don't trace kmem_cache_free on offline cpus
      c2102f3d
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · 6e49ba1b
      Linus Torvalds 提交于
      Pull fixes for cpumask and modules from Rusty Russell:
       "** NOW WITH TESTING! **
      
        Two fixes which got lost in my recent distraction.  One is a weird
        cpumask function which needed to be rewritten, the other is a module
        bug which is cc:stable"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
        cpumask_set_cpu_local_first => cpumask_local_spread, lament
        module: Call module notifier on failure after complete_formation()
      6e49ba1b
    • M
      MIPS: strnlen_user.S: Fix a CPU_DADDI_WORKAROUNDS regression · c4fca4fd
      Maciej W. Rozycki 提交于
      Correct a regression introduced with 8453eebd [MIPS: Fix strnlen_user()
      return value in case of overlong strings.] causing assembler warnings
      and broken code generated in __strnlen_kernel_nocheck_asm:
      
      arch/mips/lib/strnlen_user.S: Assembler messages:
      arch/mips/lib/strnlen_user.S:64: Warning: Macro instruction expanded into multiple instructions in a branch delay slot
      
      with the CPU_DADDI_WORKAROUNDS option set, resulting in the function
      looping indefinitely upon mounting NFS root.
      
      Use conditional assembly to avoid a microMIPS code size regression.
      Using $at unconditionally would cause such a regression as there are no
      16-bit instruction encodings available for ALU operations using this
      register.  Using $v1 unconditionally would produce short microMIPS
      encodings, but would prevent this register from being used across calls
      to this function.
      
      The extra LI operation introduced is free, replacing a NOP originally
      scheduled into the delay slot of the branch that follows.
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10205/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      c4fca4fd
    • P
      MIPS: BMIPS: Fix bmips_wr_vec() · 57b41758
      Petri Gynther 提交于
      bmips_wr_vec() copies exception vector code from start to dst.
      
      The call to dma_cache_wback() needs to flush (end-start) bytes,
      starting at dst, from write-back cache to memory.
      Signed-off-by: NPetri Gynther <pgynther@google.com>
      Acked-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: NKevin Cernekee <cernekee@gmail.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/10193/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      57b41758
    • L
      MIPS: ath79: fix build problem if CONFIG_BLK_DEV_INITRD is not set · 556b6629
      Laurent Fasnacht 提交于
      initrd_start is defined in init/do_mounts_initrd.c, which is only
      included in kernel if CONFIG_BLK_DEV_INITRD=y.
      Signed-off-by: NLaurent Fasnacht <l@libres.ch>
      Cc: linux-mips@linux-mips.org
      Cc: trivial@kernel.org
      Patchwork: https://patchwork.linux-mips.org/patch/10198/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      556b6629
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · d0af6988
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "This is made up 4 groups of fixes detailed below.
      
        vgem:
            Due to some misgivings about possible bad use cases this allow,
            backout a chunk of the interface to stop those use cases for now.
      
        radeon:
            Fix for an oops regression in the audio code, and a partial revert
            for a fix that was cauing problems.
      
        nouveau:
            regression fix for Fermi, and display-less Maxwell boot fixes.
      
        drm core:
            a fix for i915 cursor vblank waiting in the atomic helpers"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/nouveau/gr/gm204: remove a stray printk
        drm/nouveau/devinit/gm100-: force devinit table execution on boards without PDISP
        drm/nouveau/devinit/gf100: make the force-post condition more obvious
        drm/nouveau/gr/gf100-: fix wrong constant definition
        drm/radeon: partially revert "fix VM_CONTEXT*_PAGE_TABLE_END_ADDR handling"
        drm/radeon/audio: make sure connector is valid in hotplug case
        Revert "drm/radeon: only mark audio as connected if the monitor supports it (v3)"
        drm/radeon: don't share plls if monitors differ in audio support
        drm/vgem: drop DRIVER_PRIME (v2)
        drm/plane-helper: Adapt cursor hack to transitional helpers
      d0af6988
    • L
      Merge tag 'sound-4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 70946b5d
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "No big surprise here, just a bunch of small fixes for HD-audio and
        USB-audio:
      
         - partial revert of widget power-saving for IDT codecs
         - revert mute-LED enum ctl for Thinkpads due to confusion
         - a quirk for a new Radeon HDMI controller
         - Realtek codec name fix for Dell
         - a workaround for headphone mic boost on some laptops
         - stream_pm ops setup (and its fix for regression)
         - another quirk for MS LifeCam USB-audio"
      
      * tag 'sound-4.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda - Fix lost sound due to stream_pm ops cleanup
        ALSA: hda - Disable Headphone Mic boost for ALC662
        ALSA: hda - Disable power_save_node for IDT92HD71bxx
        ALSA: hda - Fix noise on AMD radeon 290x controller
        ALSA: hda - Set stream_pm ops automatically by generic parser
        ALSA: hda/realtek - Add ALC256 alias name for Dell
        Revert "ALSA: hda - Add mute-LED mode control to Thinkpad"
        ALSA: usb-audio: Add quirk for MS LifeCam HD-3000
      70946b5d
    • J
      dm: fix casting bug in dm_merge_bvec() · 1c220c69
      Joe Thornber 提交于
      dm_merge_bvec() was originally added in f6fccb ("dm: introduce
      merge_bvec_fn").  In that commit a value in sectors is converted to
      bytes using << 9, and then assigned to an int.  This code made
      assumptions about the value of BIO_MAX_SECTORS.
      
      A later commit 148e51 ("dm: improve documentation and code clarity in
      dm_merge_bvec") was meant to have no functional change but it removed
      the use of BIO_MAX_SECTORS in favor of using queue_max_sectors().  At
      this point the cast from sector_t to int resulted in a zero value.  The
      fallout being dm_merge_bvec() would only allow a single page to be added
      to a bio.
      
      This interim fix is minimal for the benefit of stable@ because the more
      comprehensive cleanup of passing a sector_t to all DM targets' merge
      function will impact quite a few DM targets.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@vger.kernel.org # 3.19+
      1c220c69
    • J
      dm: fix reload failure of 0 path multipath mapping on blk-mq devices · 15b94a69
      Junichi Nomura 提交于
      dm-multipath accepts 0 path mapping.
      
        # echo '0 2097152 multipath 0 0 0 0' | dmsetup create newdev
      
      Such a mapping can be used to release underlying devices while still
      holding requests in its queue until working paths come back.
      
      However, once the multipath device is created over blk-mq devices,
      it rejects reloading of 0 path mapping:
      
        # echo '0 2097152 multipath 0 0 1 1 queue-length 0 1 1 /dev/sda 1' \
            | dmsetup create mpath1
        # echo '0 2097152 multipath 0 0 0 0' | dmsetup load mpath1
        device-mapper: reload ioctl on mpath1 failed: Invalid argument
        Command failed
      
      With following kernel message:
        device-mapper: ioctl: can't change device type after initial table load.
      
      DM tries to inherit the current table type using dm_table_set_type()
      but it doesn't work as expected because of unnecessary check about
      whether the target type is hybrid or not.
      
      Hybrid type is for targets that work as either request-based or bio-based
      and not required for blk-mq or non blk-mq checking.
      
      Fixes: 65803c20 ("dm table: train hybrid target type detection to select blk-mq if appropriate")
      Signed-off-by: NJun'ichi Nomura <j-nomura@ce.jp.nec.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      15b94a69
    • L
      Merge tag 'md/4.1-rc5-fixes' of git://neil.brown.name/md · c492e2d4
      Linus Torvalds 提交于
      Pull m,ore md bugfixes gfrom Neil Brown:
       "Assorted fixes for new RAID5 stripe-batching functionality.
      
        Unfortunately this functionality was merged a little prematurely.  The
        necessary testing and code review is now complete (or as complete as
        it can be) and to code passes a variety of tests and looks quite
        sensible.
      
        Also a fix for some recent locking changes - a race was introduced
        which causes a reshape request to sometimes fail.  No data safety
        issues"
      
      * tag 'md/4.1-rc5-fixes' of git://neil.brown.name/md:
        md: fix race when unfreezing sync_action
        md/raid5: break stripe-batches when the array has failed.
        md/raid5: call break_stripe_batch_list from handle_stripe_clean_event
        md/raid5: be more selective about distributing flags across batch.
        md/raid5: add handle_flags arg to break_stripe_batch_list.
        md/raid5: duplicate some more handle_stripe_clean_event code in break_stripe_batch_list
        md/raid5: remove condition test from check_break_stripe_batch_list.
        md/raid5: Ensure a batch member is not handled prematurely.
        md/raid5: close race between STRIPE_BIT_DELAY and batching.
        md/raid5: ensure whole batch is delayed for all required bitmap updates.
      c492e2d4
  5. 29 5月, 2015 7 次提交