1. 19 Aug, 2014 9 commits
    • Guenter Roeck's avatar
      scsi: Fix qemu boot hang problem · 480cadc2
      Guenter Roeck authored
      The latest kernel fails to boot qemu arm images when using scsi
      for disk access. Boot gets stuck after the following messages.
      
      brd: module loaded
      sym53c8xx 0000:00:0c.0: enabling device (0100 -> 0103)
      sym0: <895a> rev 0x0 at pci 0000:00:0c.0 irq 93
      sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
      sym0: SCSI BUS has been reset.
      scsi host0: sym-2.2.3
      
      Bisect points to commit 71e75c97 ("scsi: convert device_busy to
      atomic_t"). Code inspection shows the following suspicious change
      in scsi_request_fn.
      
      out_delay:
      -       if (sdev->device_busy == 0 && !scsi_device_blocked(sdev))
      +       if (atomic_read(&sdev->device_busy) && !scsi_device_blocked(sdev))
      		blk_delay_queue(q, SCSI_QUEUE_DELAY);
      	}
      
      'sdev->device_busy == 0' was replaced with 'atomic_read(&sdev->device_busy)',
      meaning the logic was reversed. Changing this expression to
      '!atomic_read(&sdev->device_busy)' fixes the problem.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
      Acked-by: default avatarJens Axboe <axboe@fb.com>
      Reviewed-by: default avatarVenkatesh Srinivas <venkateshs@google.com>
      Reviewed-by: default avatarWebb Scales <webbnh@hp.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      480cadc2
    • Linus Torvalds's avatar
      Merge tag 'md/3.17-fixes' of git://neil.brown.name/md · 63d871cb
      Linus Torvalds authored
      Pull md bugfixes from Neil Brown:
       "Here are the bug-fixes I promised :-)
      
        Funny how you start looking for one and other start appearing.
      
         - raid6 data corruption during recovery
         - raid6 livelock
         - raid10 memory leaks"
      
      * tag 'md/3.17-fixes' of git://neil.brown.name/md:
        md/raid10: always initialise ->state on newly allocated r10_bio
        md/raid10: avoid memory leak on error path during reshape.
        md/raid10: Fix memory leak when raid10 reshape completes.
        md/raid10: fix memory leak when reshaping a RAID10.
        md/raid6: avoid data corruption during recovery of double-degraded RAID6
        md/raid5: avoid livelock caused by non-aligned writes.
      63d871cb
    • Linus Torvalds's avatar
      Merge tag 'pci-v3.17-changes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · f17a6f78
      Linus Torvalds authored
      Pull PCI changes from Bjorn Helgaas:
       "Marvell MVEBU
          - Remove ARCH_KIRKWOOD dependency (Andrew Lunn)
      
        NVIDIA Tegra
          - Add debugfs support (Thierry Reding)
      
        Synopsys DesignWare
          - Look for configuration space in 'reg', not 'ranges' (Kishon Vijay Abraham I)
          - Program ATU with untranslated address (Kishon Vijay Abraham I)
          - Add config access-related pcie_host_ops for v3.65 hardware (Murali Karicheri)
          - Add MSI-related pcie_host_ops for v3.65 hardware (Murali Karicheri)
      
        TI DRA7xx
          - Add TI DR7xx PCIe driver (Kishon Vijay Abraham I)"
      
      * tag 'pci-v3.17-changes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        PCI: designware: Add MSI-related pcie_host_ops for v3.65 hardware
        PCI: designware: Add config access-related pcie_host_ops for v3.65 hardware
        PCI: dra7xx: Add TI DRA7xx PCIe driver
        PCI: designware: Program ATU with untranslated address
        PCI: designware: Look for configuration space in 'reg', not 'ranges'
        PCI: tegra: Add debugfs support
        PCI: mvebu: Remove ARCH_KIRKWOOD dependency
      f17a6f78
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux · 7ac0bbf9
      Linus Torvalds authored
      Pull devicetree fixes from Grant Likely:
       "Three more commits needed for v3.17: A bug fix for reserved regions
        based at address zero, a clarification on how to interpret existence
        of both interrupts and interrupts-extended properties, and a fix to
        allow device tree testcases to run on any platform"
      
      * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux:
        of/irq: Fix lookup to use 'interrupts-extended' property first
        Enabling OF selftest to run without machine's devicetree
        of: Allow mem_reserve of memory with a base address of zero
      7ac0bbf9
    • Davidlohr Bueso's avatar
      frv: Define cpu_relax_lowlatency() · f325f164
      Davidlohr Bueso authored
      3a6bfbc9 "(arch,locking: Ciao arch_mutex_cpu_relax()") broke
      building the frv arch.  Fixes errors such as:
      
        kernel/locking/mcs_spinlock.h:87:2: error: implicit declaration of function 'cpu_relax_lowlatency'
      Signed-off-by: default avatarDavidlohr Bueso <davidlohr@hp.com>
      Compile-tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f325f164
    • NeilBrown's avatar
      md/raid10: always initialise ->state on newly allocated r10_bio · cb8b12b5
      NeilBrown authored
      Most places which allocate an r10_bio zero the ->state, some don't.
      As the r10_bio comes from a mempool, and the allocation function uses
      kzalloc it is often zero anyway.  But sometimes it isn't and it is
      best to be safe.
      
      I only noticed this because of the bug fixed by an earlier patch
      where the r10_bios allocated for a reshape were left around to
      be used by a subsequent resync.  In that case the R10BIO_IsReshape
      flag caused problems.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      cb8b12b5
    • NeilBrown's avatar
      md/raid10: avoid memory leak on error path during reshape. · e337aead
      NeilBrown authored
      If raid10 reshape fails to find somewhere to read a block
      from, it returns without freeing memory...
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      e337aead
    • NeilBrown's avatar
      md/raid10: Fix memory leak when raid10 reshape completes. · b3968552
      NeilBrown authored
      When a raid10 commences a resync/recovery/reshape it allocates
      some buffer space.
      When a resync/recovery completes the buffer space is freed.  But not
      when the reshape completes.
      This can result in a small memory leak.
      
      There is a subtle side-effect of this bug.  When a RAID10 is reshaped
      to a larger array (more devices), the reshape is immediately followed
      by a "resync" of the new space.  This "resync" will use the buffer
      space which was allocated for "reshape".  This can cause problems
      including a "BUG" in the SCSI layer.  So this is suitable for -stable.
      
      Cc: stable@vger.kernel.org (v3.5+)
      Fixes: 3ea7daa5Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      b3968552
    • NeilBrown's avatar
      md/raid10: fix memory leak when reshaping a RAID10. · ce0b0a46
      NeilBrown authored
      raid10 reshape clears unwanted bits from a bio->bi_flags using
      a method which, while clumsy, worked until 3.10 when BIO_OWNS_VEC
      was added.
      Since then it clears that bit but shouldn't.  This results in a
      memory leak.
      
      So change to used the approved method of clearing unwanted bits.
      
      As this causes a memory leak which can consume all of memory
      the fix is suitable for -stable.
      
      Fixes: a38352e0
      Cc: stable@vger.kernel.org (v3.10+)
      Reported-by: mdraid.pkoch@dfgh.net (Peter Koch)
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      ce0b0a46
  2. 18 Aug, 2014 2 commits
    • NeilBrown's avatar
      md/raid6: avoid data corruption during recovery of double-degraded RAID6 · 9c4bdf69
      NeilBrown authored
      During recovery of a double-degraded RAID6 it is possible for
      some blocks not to be recovered properly, leading to corruption.
      
      If a write happens to one block in a stripe that would be written to a
      missing device, and at the same time that stripe is recovering data
      to the other missing device, then that recovered data may not be written.
      
      This patch skips, in the double-degraded case, an optimisation that is
      only safe for single-degraded arrays.
      
      Bug was introduced in 2.6.32 and fix is suitable for any kernel since
      then.  In an older kernel with separate handle_stripe5() and
      handle_stripe6() functions the patch must change handle_stripe6().
      
      Cc: stable@vger.kernel.org (2.6.32+)
      Fixes: 6c0069c0
      Cc: Yuri Tikhonov <yur@emcraft.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Reported-by: default avatar"Manibalan P" <pmanibalan@amiindia.co.in>
      Tested-by: default avatar"Manibalan P" <pmanibalan@amiindia.co.in>
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1090423Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Acked-by: default avatarDan Williams <dan.j.williams@intel.com>
      9c4bdf69
    • NeilBrown's avatar
      md/raid5: avoid livelock caused by non-aligned writes. · a40687ff
      NeilBrown authored
      If a stripe in a raid6 array received a write to each data block while
      the array is degraded, and if any of these writes to a missing device
      are not page-aligned, then a live-lock happens.
      
      In this case the P and Q blocks need to be read so that the part of
      the missing block which is *not* being updated by the write can be
      constructed.  Due to a logic error, these blocks are not loaded, so
      the update cannot proceed and the stripe is 'handled' repeatedly in an
      infinite loop.
      
      This bug is unlikely as most writes are page aligned.  However as it
      can lead to a livelock it is suitable for -stable.  It was introduced
      in 3.16.
      
      Cc: stable@vger.kernel.org (v3.16)
      Fixed: 67f45548Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      a40687ff
  3. 16 Aug, 2014 29 commits