28 Oct, 2013

13 commits

  • * acpica:
    MAINTAINERS / ACPICA: Add ACPICA information to MAINTAINERS
    ACPICA: Update version to 20130823.
    ACPICA: SCI Handlers: Update handler interface, eliminate unnecessary argument.
    ACPICA: Cleanup exception codes.
    ACPICA: Tables: Cleanup RSDP signature codes.
    ACPICA: Tables: Cleanup table checksum verification code.
    ACPICA: Debugger: Add new command to display full namespace pathnames.
    ACPICA: Operation region support: Never free the handler "context" pointer.
    ACPICA: Add support for host-installed SCI handlers.
    ACPICA: Validate start object for acpi_walk_namespace.
    ACPICA: Debugger: Prevent possible command line buffer overflow, kernel behavior is not affected.
    ACPICA: Linux-specific header: enable "aarch64" 64-bit build.
    ACPICA: Debug output: small formatting update, no functional change.
    ACPICA: acpi_read: On error, do not modify the return value target location.
    ACPICA: Improve error message for "too many parent prefixes" condition.

    Rafael J. Wysocki
     
  • * acpi-conversion:
    ACPI / AC: Remove AC's proc directory.
    ideapad_laptop: convert ideapad device/driver to platform bus
    ideapad_laptop: remove ideapad_handle and ideapad_priv
    ideapad_laptop: convert internal function calls to use ideapad_private as parameter
    ideapad_laptop: introduce struct acpi_device pointer to ideapad_private structure
    ideapad_laptop: introduce #ifdef CONFIG_PM_SLEEP for PM specific code
    ACPI / AC: convert ACPI ac driver to platform bus

    Rafael J. Wysocki
     
  • * acpi-tables:
    ACPI / x86: Increase override tables number limit

    Rafael J. Wysocki
     
  • * acpi-hotplug:
    ACPI / memhotplug: Use defined marco METHOD_NAME__STA
    ACPI / hotplug: Use kobject_init_and_add() instead of _init() and _add()
    ACPI / hotplug: Don't set kobject parent pointer explicitly
    ACPI / hotplug: Set kobject name via kobject_add(), not kobject_set_name()
    hotplug, powerpc, x86: Remove cpu_hotplug_driver_lock()
    hotplug / x86: Disable ARCH_CPU_PROBE_RELEASE on x86
    hotplug / x86: Add hotplug lock to missing places
    hotplug / x86: Fix online state in cpu0 debug interface

    Rafael J. Wysocki
     
  • * acpi-processor:
    ACPI / processor: fixed a brace coding style issue
    ACPI / processor: Remove outdated comments
    ACPI / processor: remove unnecessary if (!pr) check
    ACPI / processor: remove some dead code in acpi_processor_get_info()
    x86 / ACPI: simplify _acpi_map_lsapic()
    ACPI / processor: use apic_id and remove duplicated _MAT evaluation
    ACPI / processor: Introduce apic_id in struct processor to save parsed APIC id

    Rafael J. Wysocki
     
  • * acpi-cleanup: (34 commits)
    ACPI / proc: Remove alarm proc file
    ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c
    ACPI / SBS: Remove SBS's proc directory
    ACPI / Battery: Remove battery's proc directory
    ACP / fan: trivial style cleanup
    ACPI / processor: remove superfluous pr == NULL checks
    ACPI / mm: use NUMA_NO_NODE
    toshiba_acpi: convert acpi_evaluate_object() to acpi_evaluate_integer()
    intel-smartconnect: convert acpi_evaluate_object() to acpi_evaluate_integer()
    intel-rst: convert acpi_evaluate_object() to acpi_evaluate_integer()
    fujitsu-laptop: convert acpi_evaluate_object() to acpi_evaluate_integer()
    i2c-hid: convert acpi_evaluate_object() to acpi_evaluate_integer()
    ACPI: dock: convert acpi_evaluate_object() to acpi_evaluate_integer()
    acpi_processor: convert acpi_evaluate_object() to acpi_evaluate_integer()
    pnpacpi: convert acpi_get_handle() to acpi_has_method()
    wmi: convert acpi_get_handle() to acpi_has_method()
    toshiba_acpi: convert acpi_get_handle() to acpi_has_method()
    sony-laptop: convert acpi_get_handle() to acpi_has_method()
    intel_menlow: convert acpi_get_handle() to acpi_has_method()
    fujitsu-laptop: convert acpi_get_handle() to acpi_has_method()
    ...

    Rafael J. Wysocki
     
  • Linus Torvalds
     
  • Pull parisc fix from Helge Deller:
    "This is a 2-line patch to save the CPU register which holds our task
    thread info pointer before calling a firmware function and then to
    restore it again afterwards.

    This is necessary because on some 64bit machines the high-order 32bits
    are being clobbered by the firmware call, and thus we failed to bring
    up secondary CPUs (and instead crashed the kernel) in some situations
    eg if we had more than 4GB RAM. This patch fixes a bug which has been
    since ever in the parisc linux kernel and which prevented some people
    to use a 64bit kernel"

    * 'parisc-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Do not crash 64bit SMP kernels on machines with >= 4GB RAM

    Linus Torvalds
     
  • Pull timer fix from Ingo Molnar:
    "This tree contains a clockevents regression fix for certain ARM
    subarchitectures"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clockevents: Sanitize ticks to nsec conversion

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "The tree contains three fixes:

    - Two tooling fixes

    - Reversal of the new 'MMAP2' extended mmap record ABI, introduced in
    this merge window. (Patches were proposed to fix it but it was all
    a bit late and we felt it's safer to just delay the ABI one more
    kernel release and do it right)"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf: Disable PERF_RECORD_MMAP2 support
    perf scripting perl: Fix build error on Fedora 12
    perf probe: Fix to initialize fname always before use it

    Linus Torvalds
     
  • Pull locking fix from Ingo Molnar:
    "This tree fixes a boot crash in CONFIG_DEBUG_MUTEXES=y kernels, on
    kernels built with GCC 3.x (there are still such distros)"

    Side note: it's not just a fix for old gcc versions, it's also removing
    an incredibly broken/subtle check that LLVM had issues with, and that
    made no sense.

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    mutex: Avoid gcc version dependent __builtin_constant_p() usage

    Linus Torvalds
     
  • Pull SCSI target fixes from Nicholas Bellinger:
    "Here are the outstanding target pending fixes for v3.12-rc7.

    This includes a number of EXTENDED_COPY related fixes as a result of
    Thomas and Doug's continuing testing and feedback.

    Also included is an important vhost/scsi fix that addresses a long
    standing issue where the 'write' parameter for get_user_pages_fast()
    was incorrectly set for virtio-scsi WRITEs -> DMA_TO_DEVICE, and not
    for virtio-scsi READs -> DMA_FROM_DEVICE.

    This resulted in random userspace segfaults and other unpleasantness
    on KVM host, and unfortunately has been an issue since the initial
    merge of vhost/scsi in v3.6. This patch is CC'ed to stable, along
    with two other less critical items"

    * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
    vhost/scsi: Fix incorrect usage of get_user_pages_fast write parameter
    target/pscsi: fix return value check
    target: Fail XCOPY for non matching source + destination block_size
    target: Generate failure for XCOPY I/O with non-zero scsi_status
    target: Add missing XCOPY I/O operation sense_buffer
    iser-target: check device before dereferencing its variable
    target: Return an error for WRITE SAME with ANCHOR==1
    target: Fix assignment of LUN in tracepoints
    target: Reject EXTENDED_COPY when emulate_3pc is disabled
    target: Allow non zero ListID in EXTENDED_COPY parameter list
    target: Make target_do_xcopy failures return INVALID_PARAMETER_LIST

    Linus Torvalds
     
  • Pull slave-dmaengine fixes from Vinod Koul:
    "Here is the late fixes pull request for dmaengine while you fly back
    from KS.

    We have a new dmaengine ML hosted by vger so a patch for that along
    with addition of Dave as driver mainatainer for ioat. Other fixes are
    memeory leak fixes on edma driver, small fixes on rcar-hpbdma driver
    by Sergei"

    * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: edma: fix another memory leak
    dma: edma: Fix memory leak
    MAINTAINERS: add to ioatdma maintainer list
    MAINTAINERS: add the new dmaengine mailing list

    Linus Torvalds
     

27 Oct, 2013

1 commit

  • Since the beginning of the parisc-linux port, sometimes 64bit SMP kernels were
    not able to bring up other CPUs than the monarch CPU and instead crashed the
    kernel. The reason was unclear, esp. since it involved various machines (e.g.
    J5600, J6750 and SuperDome). Testing showed, that those crashes didn't happened
    when less than 4GB were installed, or if a 32bit Linux kernel was booted.

    In the end, the fix for those SMP problems is trivial:
    During the early phase of the initialization of the CPUs, including the monarch
    CPU, the PDC_PSW firmware function to enable WIDE (=64bit) mode is called.
    It's documented that this firmware function may clobber various registers, and
    one one of those possibly clobbered registers is %cr30 which holds the task
    thread info pointer.

    Now, if %cr30 would always have been clobbered, then this bug would have been
    detected much earlier. But lots of testing finally showed, that - at least for
    %cr30 - on some machines only the upper 32bits of the 64bit register suddenly
    turned zero after the firmware call.

    So, after finding the root cause, the explanation for the various crashes
    became clear:
    - On 32bit SMP Linux kernels all upper 32bit were zero, so we didn't faced this
    problem.
    - Monarch CPUs in 64bit mode always booted sucessfully, because the inital task
    thread info pointer was below 4GB.
    - Secondary CPUs booted sucessfully on machines with less than 4GB RAM because
    the upper 32bit were zero anyay.
    - Secondary CPus failed to boot if we had more than 4GB RAM and the task thread
    info pointer was located above the 4GB boundary.

    Finally, the patch to fix this problem is trivial by saving the %cr30 register
    before the firmware call and restoring it afterwards.

    Signed-off-by: Helge Deller
    Signed-off-by: John David Anglin
    Cc: # 2.6.12+
    Signed-off-by: Helge Deller

    Helge Deller
     

26 Oct, 2013

6 commits

  • Pull ACPI and power management fixes from
    "These fix two bugs in the intel_pstate driver, a hibernate bug leading
    to nasty resume failures sometimes and acpi-cpufreq initialization bug
    that causes problems to happen during module unload when intel_pstate
    is in use.

    Specifics:

    - Fix for rounding errors in intel_pstate causing CPU utilization to
    be underestimated from Brennan Shacklett.

    - intel_pstate fix to always use the correct max pstate value when
    computing the min pstate from Dirk Brandewie.

    - Hibernation fix for deadlocking resume in cases when the probing of
    the device containing the image is deferred from Russ Dill.

    - acpi-cpufreq fix to prevent the module from staying in memory when
    the driver cannot be registered and then attempting to unregister
    things that have never been registered on exit"

    * tag 'pm+acpi-3.12-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    acpi-cpufreq: Fail initialization if driver cannot be registered
    PM / hibernate: Move software_resume to late_initcall_sync
    intel_pstate: Correct calculation of min pstate value
    intel_pstate: Improve accuracy by not truncating until final result

    Linus Torvalds
     
  • Pull final mtd fixes from Brian Norris:
    "A few more last-minute regression fixes, prepared jointly by me and
    David Woodhouse:

    - Revert pxa3xx to its old name to avoid breaking existing
    'mtdparts=' boot strings.

    - Return GPMI NAND to its legacy ECC layout for backwards
    compatibility. We will revisit this in 3.13.

    A note from David on the latter fix: 'This leaves a harmless cosmetic
    warning about an unused function. At this point in the cycle I really
    don't care.'"

    * tag 'for-linus-20131025' of git://git.infradead.org/linux-mtd:
    mtd: gpmi: fix ECC regression
    mtd: nand: pxa3xx: Fix registered MTD name

    Linus Torvalds
     
  • This patch addresses a long-standing bug where the get_user_pages_fast()
    write parameter used for setting the underlying page table entry permission
    bits was incorrectly set to write=1 for data_direction=DMA_TO_DEVICE, and
    passed into get_user_pages_fast() via vhost_scsi_map_iov_to_sgl().

    However, this parameter is intended to signal WRITEs to pinned userspace
    PTEs for the virtio-scsi DMA_FROM_DEVICE -> READ payload case, and *not*
    for the virtio-scsi DMA_TO_DEVICE -> WRITE payload case.

    This bug would manifest itself as random process segmentation faults on
    KVM host after repeated vhost starts + stops and/or with lots of vhost
    endpoints + LUNs.

    Cc: Stefan Hajnoczi
    Cc: Michael S. Tsirkin
    Cc: Asias He
    Cc: # 3.6+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • In case of error, the function scsi_host_lookup() returns NULL
    pointer not ERR_PTR(). The IS_ERR() test in the return value check
    should be replaced with NULL test.

    Signed-off-by: Wei Yongjun
    Cc:
    Signed-off-by: Nicholas Bellinger

    Wei Yongjun
     
  • Pull vfs fixes (try two) from Al Viro:
    "nfsd performance regression fix + seq_file lseek(2) fix"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    seq_file: always update file->f_pos in seq_lseek()
    nfsd regression since delayed fput()

    Linus Torvalds
     
  • The "legacy" ECC layout used until 3.12-rc1 uses all the OOB area by
    computing the ECC strength and ECC step size ourselves.

    Commit 2febcdf84b ("mtd: gpmi: set the BCHs geometry with the ecc info")
    makes the driver use the ECC info (ECC strength and ECC step size)
    provided by the MTD code, and creates a different NAND ECC layout
    for the BCH, and use the new ECC layout. This causes a regression:

    We can not mount the ubifs which was created by the old NAND ECC layout.

    This patch fixes this issue by reverting to the legacy ECC layout.

    We will probably introduce a new device-tree property to indicate that
    the new ECC layout can be used. For now though, for the imminent 3.12
    release, we just unconditionally revert to the 3.11 behaviour.

    This leaves a harmless cosmetic warning about an unused function. At
    this point in the cycle I really don't care.

    Signed-off-by: David Woodhouse
    Signed-off-by: Brian Norris
    Acked-by: Huang Shijie
    Acked-by: Marek Vasut
    Tested-by: Marek Vasut

    David Woodhouse
     

25 Oct, 2013

9 commits

  • This issue was first pointed out by Jiaxing Wang several months ago, but no
    further comments:
    https://lkml.org/lkml/2013/6/29/41

    As we know pread() does not change f_pos, so after pread(), file->f_pos
    and m->read_pos become different. And seq_lseek() does not update file->f_pos
    if offset equals to m->read_pos, so after pread() and seq_lseek()(lseek to
    m->read_pos), then a subsequent read may read from a wrong position, the
    following program produces the problem:

    char str1[32] = { 0 };
    char str2[32] = { 0 };
    int poffset = 10;
    int count = 20;

    /*open any seq file*/
    int fd = open("/proc/modules", O_RDONLY);

    pread(fd, str1, count, poffset);
    printf("pread:%s\n", str1);

    /*seek to where m->read_pos is*/
    lseek(fd, poffset+count, SEEK_SET);

    /*supposed to read from poffset+count, but this read from position 0*/
    read(fd, str2, count);
    printf("read:%s\n", str2);

    out put:
    pread:
    ck_netbios_ns 12665
    read:
    nf_conntrack_netbios

    /proc/modules:
    nf_conntrack_netbios_ns 12665 0 - Live 0xffffffffa038b000
    nf_conntrack_broadcast 12589 1 nf_conntrack_netbios_ns, Live 0xffffffffa0386000

    So we always update file->f_pos to offset in seq_lseek() to fix this issue.

    Signed-off-by: Jiaxing Wang
    Signed-off-by: Gu Zheng
    Signed-off-by: Al Viro

    Gu Zheng
     
  • Make acpi_cpufreq_init() return error codes when the driver cannot be
    registered so that the module doesn't stay useless in memory and so
    that acpi_cpufreq_exit() doesn't attempt to unregister things that
    have never been registered when the module is unloaded.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Viresh Kumar

    Rafael J. Wysocki
     
  • Pull ARM SoC fixes from Olof Johansson:
    "There's really only one bugfix in this branch, which is a fix for
    timers on the integrator platform. Since Linus Walleij is
    resurrecting support for the platform it seems valuable to get the fix
    into 3.12 even though the regression has been around a while.

    The rest are a handful of maintainers updates. If you prefer to hold
    those until 3.13 then just merge the first patch on the branch which
    is the fix"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    MAINTAINERS: Add maintainers entry for Rockchip SoCs
    MAINTAINERS: Tegra updates, and driver ownership
    MAINTAINERS: ARM: mvebu: add Sebastian Hesselbarth
    ARM: integrator: deactivate timer0 on the Integrator/CP

    Linus Torvalds
     
  • …/git/tyhicks/ecryptfs

    Pull ecryptfs fixes from Tyler Hicks:
    "Two important fixes
    - Fix long standing memory leak in the (rarely used) public key
    support
    - Fix large file corruption on 32 bit architectures"

    * tag 'ecryptfs-3.12-rc7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tyhicks/ecryptfs:
    eCryptfs: fix 32 bit corruption issue
    ecryptfs: Fix memory leakage in keystore.c

    Linus Torvalds
     
  • software_resume is being called after deferred_probe_initcall in
    drivers base. If the probing of the device that contains the resume
    image is deferred, and the system has been instructed to wait for
    it to show up, this wait will occur in software_resume. This causes
    a deadlock.

    Move software_resume into late_initcall_sync so that it happens
    after all the other late_initcalls.

    Signed-off-by: Russ Dill
    Acked-by: Pavel Machek
    Signed-off-by: Rafael J. Wysocki

    Russ Dill
     
  • In a recent commit:

    commit f455578dd961087a5cf94730d9f6489bb1d355f0
    Author: Ezequiel Garcia
    Date: Mon Aug 12 14:14:53 2013 -0300

    mtd: nand: pxa3xx: Remove hardcoded mtd name

    There's no advantage in using a hardcoded name for the mtd device.
    Instead use the provided by the platform_device.

    The MTD name was changed to use the one provided by the platform_device.
    However, this can be problematic as some users want to set partitions
    using the kernel parameter 'mtdparts', where the name is needed.

    Therefore, to avoid regressions in users relying in 'mtdparts' we revert
    the change and use the previous one 'pxa3xx_nand-0'.

    While at it, let's put a big comment and prevent this change from happening
    ever again.

    Signed-off-by: Ezequiel Garcia
    Signed-off-by: Brian Norris

    Ezequiel Garcia
     
  • Shifting page->index on 32 bit systems was overflowing, causing
    data corruption of > 4GB files. Fix this by casting it first.

    https://launchpad.net/bugs/1243636

    Signed-off-by: Colin Ian King
    Reported-by: Lars Duesing
    Cc: stable@vger.kernel.org # v3.11+
    Signed-off-by: Tyler Hicks

    Colin Ian King
     
  • commit 4b6271a6 fix a menory leak but one more existed in driver so fix that

    Signed-off-by: Vinod Koul

    Vinod Koul
     
  • When it fails to allocate a slot, edesc should be free'd before return;

    Signed-off-by: Valentin Ilie
    Signed-off-by: Vinod Koul

    Valentin Ilie
     

24 Oct, 2013

11 commits

  • This patch adds an explicit check + failure for XCOPY I/O to source +
    destination devices with a non-matching block_size.

    This limitiation is currently due to the fact that the scatterlist
    memory allocated for the XCOPY READ operation is passed zero-copy
    to the XCOPY WRITE operation.

    Reported-by: Thomas Glanzmann
    Reported-by: Douglas Gilbert
    Cc: Thomas Glanzmann
    Cc: Douglas Gilbert
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds the missing non-zero se_cmd->scsi_status check required
    for local XCOPY I/O within target_xcopy_issue_pt_cmd() to signal an
    exception case failure.

    This will trigger the generation of SAM_STAT_CHECK_CONDITION status
    from within target_xcopy_do_work() process context code.

    Reported-by: Thomas Glanzmann
    Reported-by: Douglas Gilbert
    Cc: Thomas Glanzmann
    Cc: Douglas Gilbert
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds the missing xcopy_pt_cmd->sense_buffer[] required for
    correctly handling CHECK_CONDITION exceptions within the locally
    generated XCOPY I/O path.

    Also update target_xcopy_read_source() + target_xcopy_setup_pt_cmd()
    to pass this buffer into transport_init_se_cmd() to correctly setup
    se_cmd->sense_buffer.

    Reported-by: Thomas Glanzmann
    Reported-by: Douglas Gilbert
    Cc: Thomas Glanzmann
    Cc: Douglas Gilbert
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • Pull md bugfixes from Neil Brown:
    "Assorted md bug-fixes for 3.12.

    All tagged for -stable releases too"

    * tag 'md/3.12-fixes' of git://neil.brown.name/md:
    raid5: avoid finding "discard" stripe
    raid5: set bio bi_vcnt 0 for discard request
    md: avoid deadlock when md_set_badblocks.
    md: Fix skipping recovery for read-only arrays.

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "This is a set of two fixes which cause oopses (Buslogic, qla2xxx) and
    one fix which may cause a hang because of request miscounting (sd)"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    [SCSI] sd: call blk_pm_runtime_init before add_disk
    [SCSI] qla2xxx: Fix request queue null dereference.
    [SCSI] BusLogic: Fix an oops when intializing multimaster adapter

    Linus Torvalds
     
  • This patch changes isert_connect_release() to correctly check for
    the existence struct isert_device *device before checking for
    isert_device->use_frwr.

    Signed-off-by: Vu Pham
    Signed-off-by: Nicholas Bellinger

    Vu Pham
     
  • SCSI discard will damage discard stripe bio setting, eg, some fields are
    changed. If the stripe is reused very soon, we have wrong bios setting. We
    remove discard stripe from hash list, so next time the strip will be fully
    initialized.

    Suitable for backport to 3.7+.

    Cc: (3.7+)
    Signed-off-by: Shaohua Li
    Signed-off-by: NeilBrown

    Shaohua Li
     
  • SCSI layer will add new payload for discard request. If two bios are merged
    to one, the second bio has bi_vcnt 1 which is set in raid5. This will confuse
    SCSI and cause oops.

    Suitable for backport to 3.7+

    Cc: stable@vger.kernel.org (v3.7+)
    Reported-by: Jes Sorensen
    Signed-off-by: Shaohua Li
    Signed-off-by: NeilBrown
    Acked-by: Martin K. Petersen

    Shaohua Li
     
  • When operate harddisk and hit errors, md_set_badblocks is called after
    scsi_restart_operations which already disabled the irq. but md_set_badblocks
    will call write_sequnlock_irq and enable irq. so softirq can preempt the
    current thread and that may cause a deadlock. I think this situation should
    use write_sequnlock_irqsave/irqrestore instead.

    I met the situation and the call trace is below:
    [ 638.919974] BUG: spinlock recursion on CPU#0, scsi_eh_13/1010
    [ 638.921923] lock: 0xffff8800d4d51fc8, .magic: dead4ead, .owner: scsi_eh_13/1010, .owner_cpu: 0
    [ 638.923890] CPU: 0 PID: 1010 Comm: scsi_eh_13 Not tainted 3.12.0-rc5+ #37
    [ 638.925844] Hardware name: To be filled by O.E.M. To be filled by O.E.M./MAHOBAY, BIOS 4.6.5 03/05/2013
    [ 638.927816] ffff880037ad4640 ffff880118c03d50 ffffffff8172ff85 0000000000000007
    [ 638.929829] ffff8800d4d51fc8 ffff880118c03d70 ffffffff81730030 ffff8800d4d51fc8
    [ 638.931848] ffffffff81a72eb0 ffff880118c03d90 ffffffff81730056 ffff8800d4d51fc8
    [ 638.933884] Call Trace:
    [ 638.935867] [] dump_stack+0x55/0x76
    [ 638.937878] [] spin_dump+0x8a/0x8f
    [ 638.939861] [] spin_bug+0x21/0x26
    [ 638.941836] [] do_raw_spin_lock+0xa4/0xc0
    [ 638.943801] [] _raw_spin_lock+0x66/0x80
    [ 638.945747] [] ? scsi_device_unbusy+0x9d/0xd0
    [ 638.947672] [] ? _raw_spin_unlock+0x2b/0x50
    [ 638.949595] [] scsi_device_unbusy+0x9d/0xd0
    [ 638.951504] [] scsi_finish_command+0x37/0xe0
    [ 638.953388] [] scsi_softirq_done+0xa8/0x140
    [ 638.955248] [] blk_done_softirq+0x7b/0x90
    [ 638.957116] [] __do_softirq+0xfd/0x330
    [ 638.958987] [] ? __lock_release+0x6f/0x100
    [ 638.960861] [] call_softirq+0x1c/0x30
    [ 638.962724] [] do_softirq+0x8d/0xc0
    [ 638.964565] [] irq_exit+0x10e/0x150
    [ 638.966390] [] smp_apic_timer_interrupt+0x4a/0x60
    [ 638.968223] [] apic_timer_interrupt+0x6f/0x80
    [ 638.970079] [] ? __lock_release+0x6f/0x100
    [ 638.971899] [] ? _raw_spin_unlock_irq+0x3a/0x50
    [ 638.973691] [] ? _raw_spin_unlock_irq+0x30/0x50
    [ 638.975475] [] md_set_badblocks+0x1f3/0x4a0
    [ 638.977243] [] rdev_set_badblocks+0x27/0x80
    [ 638.978988] [] raid5_end_read_request+0x36b/0x4e0 [raid456]
    [ 638.980723] [] bio_endio+0x1d/0x40
    [ 638.982463] [] req_bio_endio.isra.65+0x83/0xa0
    [ 638.984214] [] blk_update_request+0x7f/0x350
    [ 638.985967] [] blk_update_bidi_request+0x31/0x90
    [ 638.987710] [] __blk_end_bidi_request+0x20/0x50
    [ 638.989439] [] __blk_end_request_all+0x1f/0x30
    [ 638.991149] [] blk_peek_request+0x106/0x250
    [ 638.992861] [] ? scsi_kill_request.isra.32+0xe9/0x130
    [ 638.994561] [] scsi_request_fn+0x4a/0x3d0
    [ 638.996251] [] __blk_run_queue+0x37/0x50
    [ 638.997900] [] blk_run_queue+0x2f/0x50
    [ 638.999553] [] scsi_run_queue+0xe0/0x1c0
    [ 639.001185] [] scsi_run_host_queues+0x21/0x40
    [ 639.002798] [] scsi_restart_operations+0x177/0x200
    [ 639.004391] [] scsi_error_handler+0xc9/0xe0
    [ 639.005996] [] ? scsi_unjam_host+0xd0/0xd0
    [ 639.007600] [] kthread+0xdb/0xe0
    [ 639.009205] [] ? flush_kthread_worker+0x170/0x170
    [ 639.010821] [] ret_from_fork+0x7c/0xb0
    [ 639.012437] [] ? flush_kthread_worker+0x170/0x170

    This bug was introduce in commit 2e8ac30312973dd20e68073653
    (the first time rdev_set_badblock was call from interrupt context),
    so this patch is appropriate for 3.5 and subsequent kernels.

    Cc: (3.5+)
    Signed-off-by: Bian Yu
    Reviewed-by: Jianpeng Ma
    Signed-off-by: NeilBrown

    Bian Yu
     
  • Since:
    commit 7ceb17e87bde79d285a8b988cfed9eaeebe60b86
    md: Allow devices to be re-added to a read-only array.

    spares are activated on a read-only array. In case of raid1 and raid10
    personalities it causes that not-in-sync devices are marked in-sync
    without checking if recovery has been finished.

    If a read-only array is degraded and one of its devices is not in-sync
    (because the array has been only partially recovered) recovery will be skipped.

    This patch adds checking if recovery has been finished before marking a device
    in-sync for raid1 and raid10 personalities. In case of raid5 personality
    such condition is already present (at raid5.c:6029).

    Bug was introduced in 3.10 and causes data corruption.

    Cc: stable@vger.kernel.org
    Signed-off-by: Pawel Baldysiak
    Signed-off-by: Lukasz Dorau
    Signed-off-by: NeilBrown

    Lukasz Dorau
     
  • Signed-off-by: Dave Jiang
    [djbw: add dmaengine list]
    Signed-off-by: Dan Williams
    Signed-off-by: Vinod Koul

    Dave Jiang