1. 27 7月, 2013 14 次提交
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 6c504ecf
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "This is just a regular fixes pull apart from the qxl one, it has
        radeon and intel bits in it,
      
        The intel fixes are for a regression with the RC6 fix and a 3.10 hdmi
        regression, whereas radeon is more DPM fixes, a few lockup fixes and
        some rn50/r100 DAC fixes"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/radeon/dpm: fix r600_enable_sclk_control()
        drm/radeon/dpm: implement force performance levels for rv6xx
        drm/radeon/dpm: fix displaygap programming on rv6xx
        drm/radeon/dpm: fix a typo in the rv6xx mclk setup
        drm/i915: initialize gt_lock early with other spin locks
        drm/i915: fix hdmi portclock limits
        drm/radeon: fix combios tables on older cards
        drm/radeon: improve dac adjust heuristics for legacy pdac
        drm/radeon: Another card with wrong primary dac adj
        drm/radeon: fix endian issues with DP handling (v3)
        drm/radeon/vm: only align the pt base to 32k
        drm/radeon: wait for 3D idle before using CP DMA
      6c504ecf
    • L
      Merge branch 'qxl-fixes' of git://people.freedesktop.org/~airlied/linux · 2408c2e5
      Linus Torvalds 提交于
      Pull qxl drm fixes from Dave Airlie:
       "Okay as I warned, the qxl driver was running a bit free and loose with
        its ttm object reservations and the new lockdep enabled reservation
        tracking shone a bright light into it, it also with the new
        reservations mutexes hits a possible deadlock during boot.
      
        The first patch is a real fix to render the console correctly as the
        driver used to just drop irq renderering as too hard, this also fixes
        a sleeping while atomic warning.
      
        The other two patches are the big ugly ones that redo how the driver
        allocates objects and reserves them and makes things all work
        properly, I've tested this in a VM, and compared to the current code
        which hits a lockdep warning and the sleep while atomic warning before
        failing.
      
        So sorry this is coming in late, I should have tested qxl before
        merging the mutex code, but I'd rather just fix qxl with this than
        revert the reservations code at this point"
      
      * 'qxl-fixes' of git://people.freedesktop.org/~airlied/linux:
        qxl: convert qxl driver to proper use for reservations
        qxl: allow creation of pre-pinned objects and use for releases.
        drm/qxl: add delayed fb operations
      2408c2e5
    • L
      Merge tag 'pm+acpi-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 0f746650
      Linus Torvalds 提交于
      Pull ACPI and power management fixes from Rafael Wysocki:
       "These are just two fixes, a revert of the would-be backlight fix that
        didn't work and an intel_pstate fix for two problems related to
        maximum P-state selection.
      
        Specifics:
      
         - Revert of the ACPI video commit that I hoped would help fix
           backlight problems related to Windows 8 compatibility on some
           systems.  Unfortunately, it turned out to cause problems to happen
           too.
      
         - Fix for two problems in intel_pstate, a possible failure to respond
           to a load change on a quiet system and a possible failure to select
           the highest available P-state on some systems.  From Dirk
           Brandewie"
      
      * tag 'pm+acpi-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        Revert "ACPI / video / i915: No ACPI backlight if firmware expects Windows 8"
        cpufreq / intel_pstate: Change to scale off of max P-state
      0f746650
    • L
      Merge tag 'arm64-stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64 · a9b5f023
      Linus Torvalds 提交于
      Pull arm64 fixes from Catalin Marinas:
       - Stack size increased to 16K (similar to other 64-bit architectures)
       - Additional cache flushing for secondary CPUs boot mode
      
      * tag 'arm64-stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64:
        arm64: Change kernel stack size to 16K
        arm64: Fix definition of arm_pm_restart to match the declaration
        arm64: virt: ensure visibility of __boot_cpu_mode
      a9b5f023
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · fef36a7a
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Olof Johansson:
       "This is a largeish batch of fixes, mostly because I missed -rc2 due to
        travel/vacation.  So in number these are a bit more than ideal unless
        you amortize them over two -rcs.
      
        Quick breakdown:
         - Defconfig updates
           - Making multi_v7_defconfig useful on more hardware to encourage
             single-image usage
           - Davinci and nomadik updates due to new code merged this merge
             window
         - Fixes for UART on Samsung platforms, both PM and clock-related
         - A handful of warning fixes from defconfig builds, including for
           max8925 backlight and pxamci (both with appropriate acks)
         - Exynos5440 fixes for LPAE configuration, PM
         - ...plus a bunch of other smaller changes all over the place
      
        I expect to switch to regressions-or-severe-bugs-only fixes from here
        on out"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (37 commits)
        mfd: max8925: fix dt code for backlight
        ARM: omap5: Only select errata 798181 if SMP
        ARM: EXYNOS: Update CONFIG_ARCH_NR_GPIO for Exynos
        ARM: EXYNOS: Fix low level debug support
        ARM: SAMSUNG: Save/restore only selected uart's registers
        ARM: SAMSUNG: Add SAMSUNG_PM config option to select pm
        ARM: S3C24XX: Add missing clkdev entries for s3c2440 UART
        ARM: multi_v7_defconfig: Select USB chipidea driver
        ARM: pxa: propagate errors from regulator_enable() to pxamci
        ARM: zynq: fix compilation warning
        ARM: keystone: fix compilation warning
        ARM: highbank: Only touch common coherency control register fields
        ARM: footbridge: fix overlapping PCI mappings
        dmaengine: shdma: fix a build failure on platforms with no DMA support
        ARM: STi: Set correct ARM ERRATAs.
        ARM: dts: STi: Fix pinconf setup for STiH416 serial2
        ARM: nomadik: configure for NO_HZ and HRTIMERS
        ARM: nomadik: update defconfig base
        ARM: nomadik: Update MMC defconfigs
        ARM: davinci: defconfig: enable EDMA driver
        ...
      fef36a7a
    • L
      Merge tag 'usb-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · db8cbfad
      Linus Torvalds 提交于
      Pull USB fixes from Greg KH:
       "Here are a number of USB fixes for 3.11-rc3.
      
        Lots of little things, nothing major.  A number of new device ids,
        build fixes for DMA, and a bunch of other minor things.  All of these
        have been in the linux-next tree"
      
      * tag 'usb-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (40 commits)
        usb: Clear both buffers when clearing a control transfer TT buffer.
        usb/gadget: free opts struct on error recovery
        USB: mos7840: fix memory leak in open
        usb: serial: option.c: remove ONDA MT825UP product ID fromdriver
        usb: serial: option: add Olivetti Olicard 200
        usb: serial: option: blacklist ONDA MT689DC QMI interface
        xhci: fix null pointer dereference on ring_doorbell_for_active_rings
        usb: host: xhci: Enable XHCI_SPURIOUS_SUCCESS for all controllers with xhci 1.0
        usb: fix build warning in pci-quirks.h when CONFIG_PCI is not enabled
        usb: xhci: Mark two functions __maybe_unused
        xhci: Avoid NULL pointer deref when host dies.
        usb: serial: option: Add ONYX 3G device support
        USB: ti_usb_3410_5052: fix dynamic-id matching
        usb: option: add TP-LINK MA260
        USB: option: add D-Link DWM-152/C1 and DWM-156/C1
        USB: EHCI: Fix resume signalling on remote wakeup
        USB: cp210x: add MMB and PI ZigBee USB Device Support
        usb: cp210x support SEL C662 Vendor/Device
        USB: option: append Petatel NP10T device to GSM modems list
        USB: misc: Add Manhattan Hi-Speed USB DVI Converter to sisusbvga
        ...
      db8cbfad
    • L
      Merge tag 'tty-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · ab20fb81
      Linus Torvalds 提交于
      Pull tty/serial fixes from Greg KH:
       "Here are 3 fixes for TTY and serial issues that have been reported.
        Nothing huge, but nice to get fixed"
      
      * tag 'tty-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        serial: tegra: correct help message in Kconfig from 'ttyHS' to 'ttyTHS'
        tty/8250_early: Don't truncate last character of options
        TTY: snyclinkmp: calculating wrong addresses
      ab20fb81
    • L
      Merge tag 'staging-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · f19e6c69
      Linus Torvalds 提交于
      Pull staging fixes from Greg KH:
       "Here are some tiny drivers/staging/ fixes for 3.11-rc3
      
        A number of bugfixes, all pretty tiny, but resolve issues that have
        been reported (the kstrtos32 change fixes a data corruption problem
        that Dan found).  And a MAINTAINERS file update for the comedi
        drivers"
      
      * tag 'staging-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        MAINTAINERS: Update the list of maintainers for staging/comedi driver.
        staging: tidspbridge: replace strict_strtol() with kstrtos32()
        staging: android: logger: Correct write offset reset on error
        staging: zram: protect zram_reset_device() call
        staging: gdm72xx: potential use after free in send_qos_list()
        staging: drm/imx: drop "select OF_VIDEOMODE"
        staging: frontier: use after free in disconnect()
        staging: comedi: fix a race between do_cmd_ioctl() and read/write
        staging: comedi: COMEDI_CANCEL ioctl should wake up read/write
      f19e6c69
    • L
      Merge tag 'char-misc-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 05e4cb7c
      Linus Torvalds 提交于
      Pull char/misc patches from Greg KH:
       "Here are some char/misc patches for 3.11-rc3.  It's pretty much just:
         - mei fixes
         - hyperv fixes
         - new ja_JP translation update
        all tiny stuff, but fixes for issues people have reported."
      
      * tag 'char-misc-3.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        HOWTO ja_JP sync
        mei: me: fix waiting for hw ready
        mei: don't have to clean the state on power up
        mei: me: fix reset state machine
        mei: hbm: fix typo in error message
        Tools: hv: KVP: Fix a bug in IPV6 subnet enumeration
        Drivers: hv: balloon: Do not post pressure status if interrupted
        Drivers: hv: balloon: Fix a bug in the hot-add code
        Drivers: hv: vmbus: incorrect device name is printed when child device is unregistered
      05e4cb7c
    • L
      Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 8f074a55
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "Just a handful of regression and small fixes in ASoC, HD-audio and
        USB-audio drivers.
      
         - Sigmetal HD-audio codec regression fixes
         - A copule of XRUN indication fixes for usb-audio devices
         - ASoC: ep93xx build fix, sgtl5000 fix for probe order changes,
           max98088 register access fix, etc"
      
      * tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hiface: return correct XRUN indication
        ASoC: tegra: correct playback_dma_data setup
        ASoC: core: double free in snd_soc_add_platform()
        ALSA: usb-audio: 6fire: return correct XRUN indication
        ASoC: ep93xx: fix build of ep93xx-ac97.c
        ALSA: hda - Remove NO_PRESENCE bit override for Dell 1420n Laptop
        ALSA: hda - Fix EAPD GPIO control for Sigmatel codecs
        ASoC: atmel-ssc: remove clk_disable_unprepare call from critical section
        ASoC: sgtl5000: defer the probe if clock is not found
        ASoC: max98088 - fix element type of the register cache.
      8f074a55
    • L
      Merge tag 'for-linus-v3.11-rc3' of git://oss.sgi.com/xfs/xfs · 6c4155a9
      Linus Torvalds 提交于
      Pull xfs fix from Ben Myers:
       "Fix for regression in commit cca9f93a ("xfs: don't do IO when
        creating an new inode"), recovery causing filesystem corruption after
        a crash"
      
      * tag 'for-linus-v3.11-rc3' of git://oss.sgi.com/xfs/xfs:
        xfs: di_flushiter considered harmful
      6c4155a9
    • L
      Merge branch 'for-3.11' of git://linux-nfs.org/~bfields/linux · f315cf5e
      Linus Torvalds 提交于
      Pull nfsd fix from Bruce Fields:
       "One more nfsd bugfix for 3.11"
      
      * 'for-3.11' of git://linux-nfs.org/~bfields/linux:
        nfsd: nfsd_open: when dentry_open returns an error do not propagate as struct file
      f315cf5e
    • L
      Merge tag 'md/3.11-fixes' of git://neil.brown.name/md · c271f5bc
      Linus Torvalds 提交于
      Pull md fixes from Neil Brown:
       "Two more bugfixes for md in 3.11
      
        Both marked for -stable, both since 3.3.  I guess I should spend more
        time testing..."
      
      * tag 'md/3.11-fixes' of git://neil.brown.name/md:
        md/raid5: fix interaction of 'replace' and 'recovery'.
        md/raid10: remove use-after-free bug.
      c271f5bc
    • L
      Merge branch 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · c7dad234
      Linus Torvalds 提交于
      Pull libata fixes from Tejun Heo:
       "Assorted libata updates.
      
        The most critical one is a fix for ahci oops during boot.  Also, a new
        smallish platform ahci driver is added and sata_inic162x is marked
        clearly as experimental (it whines during boot too) as data corruption
        seems rather common on the device and it's unlikely to get any love in
        the foreseeable future.  If the whining doesn't draw any attention, I
        think we'd probably be better of making the driver depend on BROKEN in
        a couple releases"
      
      This is v2 of this pull request with fixed dependencies for ahci_imx.
      
      * 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        ahci_imx: depend on CONFIG_MFD_SYSCON
        ahci_imx: add ahci sata support on imx platforms
        ARM: imx6q: update the sata bits definitions of gpr13
        ahci: fix Null pointer dereference in achi_host_active()
        libata: make it clear that sata_inic162x is experimental
        libata: replace strict_strtol() with kstrtol()
        ata: Fix DVD not dectected at some platform with Wellsburg PCH
      c7dad234
  2. 26 7月, 2013 17 次提交
  3. 25 7月, 2013 9 次提交
    • D
      xfs: di_flushiter considered harmful · e1b4271a
      Dave Chinner 提交于
      When we made all inode updates transactional, we no longer needed
      the log recovery detection for inodes being newer on disk than the
      transaction being replayed - it was redundant as replay of the log
      would always result in the latest version of the inode would be on
      disk. It was redundant, but left in place because it wasn't
      considered to be a problem.
      
      However, with the new "don't read inodes on create" optimisation,
      flushiter has come back to bite us. Essentially, the optimisation
      made always initialises flushiter to zero in the create transaction,
      and so if we then crash and run recovery and the inode already on
      disk has a non-zero flushiter it will skip recovery of that inode.
      As a result, log recovery does the wrong thing and we end up with a
      corrupt filesystem.
      
      Because we have to support old kernel to new kernel upgrades, we
      can't just get rid of the flushiter support in log recovery as we
      might be upgrading from a kernel that doesn't have fully transactional
      inode updates.  Unfortunately, for v4 superblocks there is no way to
      guarantee that log recovery knows about this fact.
      
      We cannot add a new inode format flag to say it's a "special inode
      create" because it won't be understood by older kernels and so
      recovery could do the wrong thing on downgrade. We cannot specially
      detect the combination of zero mode/non-zero flushiter on disk to
      non-zero mode, zero flushiter in the log item during recovery
      because wrapping of the flushiter can result in false detection.
      
      Hence that makes this "don't use flushiter" optimisation limited to
      a disk format that guarantees that we don't need it. And that means
      the only fix here is to limit the "no read IO on create"
      optimisation to version 5 superblocks....
      Reported-by: NMarkus Trippelsdorf <markus@trippelsdorf.de>
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NMark Tinguely <tinguely@sgi.com>
      Signed-off-by: NBen Myers <bpm@sgi.com>
      
      (cherry picked from commit e60896d8)
      e1b4271a
    • O
      xhci: fix null pointer dereference on ring_doorbell_for_active_rings · d66eaf9f
      Oleksij Rempel 提交于
      in some cases where device is attched to xhci port and do not responding,
      for example ath9k_htc with stalled firmware, kernel will
      crash on ring_doorbell_for_active_rings.
      This patch check if pointer exist before it is used.
      
      This patch should be backported to kernels as old as 2.6.35, that
      contain the commit e9df17eb "USB: xhci:
      Correct assumptions about number of rings per endpoint"
      Signed-off-by: NOleksij Rempel <linux@rempel-privat.de>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@vger.kernel.org
      d66eaf9f
    • G
      usb: host: xhci: Enable XHCI_SPURIOUS_SUCCESS for all controllers with xhci 1.0 · 07f3cb7c
      George Cherian 提交于
      Xhci controllers with hci_version > 0.96 gives spurious success
      events on short packet completion. During webcam capture the
      "ERROR Transfer event TRB DMA ptr not part of current TD" was observed.
      The same application works fine with synopsis controllers hci_version 0.96.
      The same issue is seen with Intel Pantherpoint xhci controller. So enabling
      this quirk in xhci_gen_setup if controller verion is greater than 0.96.
      For xhci-pci move the quirk to much generic place xhci_gen_setup.
      
      Note from Sarah:
      
      The xHCI 1.0 spec changed how hardware handles short packets.  The HW
      will notify SW of the TRB where the short packet occurred, and it will
      also give a successful status for the last TRB in a TD (the one with the
      IOC flag set).  On the second successful status, that warning will be
      triggered in the driver.
      
      Software is now supposed to not assume the TD is not completed until it
      gets that last successful status.  That means we have a slight race
      condition, although it should have little practical impact.  This patch
      papers over that issue.
      
      It's on my long-term to-do list to fix this race condition, but it is a
      much more involved patch that will probably be too big for stable.  This
      patch is needed for stable to avoid serious log spam.
      
      This patch should be backported to kernels as old as 3.0, that
      contain the commit ad808333 "Intel xhci:
      Ignore spurious successful event."
      
      The patch will have to be modified for kernels older than 3.2, since
      that kernel added the xhci_gen_setup function for xhci platform devices.
      The correct conflict resolution for kernels older than 3.2 is to set
      XHCI_SPURIOUS_SUCCESS in xhci_pci_quirks for all xHCI 1.0 hosts.
      Signed-off-by: NGeorge Cherian <george.cherian@ti.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Cc: stable@vger.kernel.org
      07f3cb7c
    • R
      usb: fix build warning in pci-quirks.h when CONFIG_PCI is not enabled · c4d949b7
      Randy Dunlap 提交于
      Fix warning when CONFIG_PCI is not enabled
      (from commit 29636578).
      
      drivers/usb/host/pci-quirks.h: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
      Signed-off-by: NRandy Dunlap <rdunlap@infradead.org>
      Reported-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Moiz Sonasath <m-sonasath@ti.com>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      c4d949b7
    • O
      usb: xhci: Mark two functions __maybe_unused · d5c82feb
      Olof Johansson 提交于
      Resolves the following build warnings:
      drivers/usb/host/xhci.c:332:13: warning: 'xhci_msix_sync_irqs' defined but not used [-Wunused-function]
      drivers/usb/host/xhci.c:3901:12: warning: 'xhci_change_max_exit_latency' defined but not used [-Wunused-function]
      
      These functions are not always used, and since they're marked static
      they will produce build warnings:
      - xhci_msix_sync_irqs is only used with CONFIG_PCI.
      - xhci_change_max_exit_latency is a little more complicated with
        dependencies on CONFIG_PM and CONFIG_PM_RUNTIME.
      
      Instead of building a bigger maze of ifdefs in this code, I've just
      marked both with __maybe_unused.
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      d5c82feb
    • S
      xhci: Avoid NULL pointer deref when host dies. · 203a8661
      Sarah Sharp 提交于
      When the host controller fails to respond to an Enable Slot command, and
      the host fails to respond to the register write to abort the command
      ring, the xHCI driver will assume the host is dead, and call
      usb_hc_died().
      
      The USB device's slot_id is still set to zero, and the pointer stored at
      xhci->devs[0] will always be NULL.  The call to xhci_check_args in
      xhci_free_dev should have caught the NULL virt_dev pointer.
      
      However, xhci_free_dev is designed to free the xhci_virt_device
      structures, even if the host is dead, so that we don't leak kernel
      memory.  xhci_free_dev checks the return value from the generic
      xhci_check_args function.  If the return value is -ENODEV, it carries on
      trying to free the virtual device.
      
      The issue is that xhci_check_args looks at the host controller state
      before it looks at the xhci_virt_device pointer.  It will return -ENIVAL
      because the host is dead, and xhci_free_dev will ignore the return
      value, and happily dereference the NULL xhci_virt_device pointer.
      
      The fix is to make sure that xhci_check_args checks the xhci_virt_device
      pointer before it checks the host state.
      
      See https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1203453 for
      further details.  This patch doesn't solve the underlying issue, but
      will ensure we don't see any more NULL pointer dereferences because of
      the issue.
      
      This patch should be backported to kernels as old as 3.1, that
      contain the commit 7bd89b40 "xhci: Don't
      submit commands or URBs to halted hosts."
      Signed-off-by: NSarah Sharp <sarah.a.sharp@linux.intel.com>
      Reported-by: NVincent Thiele <vincentthiele@gmail.com>
      Cc: stable@vger.kernel.org
      203a8661
    • J
      drm/i915: initialize gt_lock early with other spin locks · 14c5cec5
      Jani Nikula 提交于
      commit 181d1b9e
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Sun Jul 21 13:16:24 2013 +0200
      
          drm/i915: fix up gt init sequence fallout
      
      moved dev_priv->gt_lock initialization after use. Do the initialization
      much earlier with other spin lock initializations.
      Reported-by: NSedat Dilek <sedat.dilek@gmail.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Tested-by: NSedat Dilek <sedat.dilek@gmail.com>
      Cc: stable@vger.kernel.org (since the regressing patch is also cc: stable)
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      14c5cec5
    • N
      md/raid5: fix interaction of 'replace' and 'recovery'. · f94c0b66
      NeilBrown 提交于
      If a device in a RAID4/5/6 is being replaced while another is being
      recovered, then the writes to the replacement device currently don't
      happen, resulting in corruption when the replacement completes and the
      new drive takes over.
      
      This is because the replacement writes are only triggered when
      's.replacing' is set and not when the similar 's.sync' is set (which
      is the case during resync and recovery - it means all devices need to
      be read).
      
      So schedule those writes when s.replacing is set as well.
      
      In this case we cannot use "STRIPE_INSYNC" to record that the
      replacement has happened as that is needed for recording that any
      parity calculation is complete.  So introduce STRIPE_REPLACED to
      record if the replacement has happened.
      
      For safety we should also check that STRIPE_COMPUTE_RUN is not set.
      This has a similar effect to the "s.locked == 0" test.  The latter
      ensure that now IO has been flagged but not started.  The former
      checks if any parity calculation has been flagged by not started.
      We must wait for both of these to complete before triggering the
      'replace'.
      
      Add a similar test to the subsequent check for "are we finished yet".
      This possibly isn't needed (is subsumed in the STRIPE_INSYNC test),
      but it makes it more obvious that the REPLACE will happen before we
      think we are finished.
      
      Finally if a NeedReplace device is not UPTODATE then that is an
      error.  We really must trigger a warning.
      
      This bug was introduced in commit 9a3e1101
      (md/raid5:  detect and handle replacements during recovery.)
      which introduced replacement for raid5.
      That was in 3.3-rc3, so any stable kernel since then would benefit
      from this fix.
      
      Cc: stable@vger.kernel.org (3.3+)
      Reported-by: Nqindehua <13691222965@163.com>
      Tested-by: Nqindehua <qindehua@163.com>
      Signed-off-by: NNeilBrown <neilb@suse.de>
      f94c0b66
    • N
      md/raid10: remove use-after-free bug. · 0eb25bb0
      NeilBrown 提交于
      We always need to be careful when calling generic_make_request, as it
      can start a chain of events which might free something that we are
      using.
      
      Here is one place I wasn't careful enough.  If the wbio2 is not in
      use, then it might get freed at the first generic_make_request call.
      So perform all necessary tests first.
      
      This bug was introduced in 3.3-rc3 (24afd80d) and can cause an
      oops, so fix is suitable for any -stable since then.
      
      Cc: stable@vger.kernel.org (3.3+)
      Signed-off-by: NNeilBrown <neilb@suse.de>
      0eb25bb0