18 Jan, 2015

7 commits

  • Pull ARM SoC fixes from Olof Johansson:
    "We've been sitting on our fixes branch for a while, so this batch is
    unfortunately on the large side.

    A lot of these are tweaks and fixes to device trees, fixing various
    bugs around clocks, reg ranges, etc. There's also a few defconfig
    updates (which are on the late side, no more of those).

    All in all the diffstat is bigger than ideal at this time, but nothing
    in here seems particularly risky"

    * tag 'armsoc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (31 commits)
    reset: sunxi: fix spinlock initialization
    ARM: dts: disable CCI on exynos5420 based arndale-octa
    drivers: bus: check cci device tree node status
    ARM: rockchip: disable jtag/sdmmc autoswitching on rk3288
    ARM: nomadik: fix up leftover device tree pins
    ARM: at91: board-dt-sama5: add phy_fixup to override NAND_Tree
    ARM: at91/dt: sam9263: Add missing clocks to lcdc node
    ARM: at91: sama5d3: dt: correct the sound route
    ARM: at91/dt: sama5d4: fix the timer reg length
    ARM: exynos_defconfig: Enable LM90 driver
    ARM: exynos_defconfig: Enable options for display panel support
    arm: dts: Use pmu_system_controller phandle for dp phy
    ARM: shmobile: sh73a0 legacy: Set .control_parent for all irqpin instances
    ARM: dts: berlin: correct BG2Q's SM GPIO location.
    ARM: dts: berlin: add broken-cd and set bus width for eMMC in Marvell DMP DT
    ARM: dts: berlin: fix io clk and add missing core clk for BG2Q sdhci2 host
    ARM: dts: Revert disabling of smc91x for n900
    ARM: dts: imx51-babbage: Fix ULPI PHY reset modelling
    ARM: dts: dra7-evm: fix qspi device tree partition size
    ARM: omap2plus_defconfig: use CONFIG_CPUFREQ_DT
    ...

    Linus Torvalds
     
  • Pull clock driver fixes from Mike Turquette:
    "Small number of fixes for clock drivers and a single null pointer
    dereference fix in the framework core code.

    The driver fixes vary from fixing section mismatch warnings to
    preventing machines from hanging (and preventing developers from
    crying)"

    * tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux:
    clk: fix possible null pointer dereference
    Revert "clk: ppc-corenet: Fix Section mismatch warning"
    clk: rockchip: fix deadlock possibility in cpuclk
    clk: berlin: bg2q: remove non-exist "smemc" gate clock
    clk: at91: keep slow clk enabled to prevent system hang
    clk: rockchip: fix rk3288 cpuclk core dividers
    clk: rockchip: fix rk3066 pll lock bit location
    clk: rockchip: Fix clock gate for rk3188 hclk_emem_peri
    clk: rockchip: add CLK_IGNORE_UNUSED flag to fix rk3066/rk3188 USB Host

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "This is one fix for a Multiqueue sleeping in invalid context problem
    and a MAINTAINER file update for Qlogic"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: ->queue_rq can't sleep
    MAINTAINERS: Update maintainer list for qla4xxx

    Linus Torvalds
     
  • The commit 646cafc6 (clk: Change clk_ops->determine_rate to
    return a clk_hw as the best parent) opens a possibility for
    null pointer dereference, fix this.

    Signed-off-by: Stanimir Varbanov
    Reviewed-by: Stephen Boyd
    Signed-off-by: Michael Turquette

    Stanimir Varbanov
     
  • This reverts commit da788acb28386aa896224e784954bb73c99ff26c.

    That commit tried to fix the section mismatch warning by moving the
    ppc_corenet_clk_driver struct to init section. This is definitely wrong
    because the kernel would free the memories occupied by this struct
    after boot while this driver is still registered in the driver core.
    The kernel would panic when accessing this driver struct.

    Cc: stable@vger.kernel.org # 3.17
    Signed-off-by: Kevin Hao
    Acked-by: Scott Wood
    Signed-off-by: Michael Turquette

    Kevin Hao
     
  • Lockdep reported a possible deadlock between the cpuclk lock and for example
    the i2c driver.

    CPU0 CPU1
    ---- ----
    lock(clk_lock);
    local_irq_disable();
    lock(&(&i2c->lock)->rlock);
    lock(clk_lock);

    lock(&(&i2c->lock)->rlock);

    *** DEADLOCK ***

    The generic clock-types of the core ccf already use spin_lock_irqsave when
    touching clock registers, so do the same for the cpuclk.

    Signed-off-by: Heiko Stuebner
    Reviewed-by: Doug Anderson
    Signed-off-by: Michael Turquette
    [mturquette@linaro.org: removed initialization of "flags"]

    Heiko Stübner
     
  • Pull dmaengine fixes from Vinod Koul:
    "Two patches, the first by Andy to fix dw dmac runtime pm and second
    one by me to fix the dmaengine headers in MAINTAINERS"

    * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: dw: balance PM runtime calls
    MAINTAINERS: dmaengine: fix the header file for dmaengine

    Linus Torvalds
     

17 Jan, 2015

6 commits

  • Call spin_lock_init() before the spinlocks are used, both in early init
    and probe functions preventing a lockdep splat.

    I have been observing lockdep complaining [1] during boot on my a80 optimus [2]
    when CONFIG_PROVE_LOCKING has been enabled. This patch resolves the splat,
    and has been tested on a few other sunxi platforms without issue.

    [1] http://storage.kernelci.org/next/next-20150107/arm-multi_v7_defconfig+CONFIG_PROVE_LOCKING=y/lab-tbaker/boot-sun9i-a80-optimus.html
    [2] http://kernelci.org/boot/?a80-optimus

    Signed-off-by: Tyler Baker
    Cc:
    Acked-by: Philipp Zabel
    Signed-off-by: Kevin Hilman
    Signed-off-by: Olof Johansson

    Tyler Baker
     
  • The arm-cci driver completes the probe sequence even if the cci node is
    marked as disabled. Add a check in the driver to honour the cci status
    in the device tree.

    Signed-off-by: Abhilash Kesavan
    Acked-by: Sudeep Holla
    Acked-by: Nicolas Pitre
    Tested-by: Sudeep Holla
    Tested-by: Kevin Hilman
    Signed-off-by: Olof Johansson

    Abhilash Kesavan
     
  • Pull char/misc driver fixes from Greg KH:
    "Here are three small driver fixes for reported issues for 3.19-rc5.

    All of these have been in linux-next for a while with no reported
    problems"

    * tag 'char-misc-3.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    mcb: mcb-pci: Only remap the 1st 0x200 bytes of BAR 0
    mei: add ABI documentation for fw_status exported through sysfs
    mei: clean reset bit before reset

    Linus Torvalds
     
  • Pull tty/serial driver fixes from Greg KH:
    "Here are some tty and serial driver fixes for 3.19-rc5 that resolve
    some reported issues, and add a new device id to the 8250 serial port
    driver.

    All have been in linux-next with no reported problems"

    * tag 'tty-3.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    serial: samsung: Add the support for Exynos5433 SoC
    Revert "tty: Fix pty master poll() after slave closes v2"
    tty: Prevent hw state corruption in exclusive mode reopen
    tty: Add support for the WCH384 4S multi-IO card
    serial: fix parisc boot hang

    Linus Torvalds
     
  • Pull staging driver fixes from Greg KH:
    "Here are 6 staging driver fixes for 3.19-rc5.

    They fix some reported issues with some IIO drivers, as well as some
    issues with the vt6655 wireless driver.

    All have been in linux-next for a while"

    * tag 'staging-3.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: vt6655: fix sparse warning: argument type
    staging: vt6655: Fix loss of distant/weak access points on channel change.
    staging: vt6655: vnt_tx_packet Fix corrupted tx packets.
    staging: vt6655: fix sparse warnings: incorrect argument type
    iio: iio: Fix iio_channel_read return if channel havn't info
    iio: ad799x: Fix ad7991/ad7995/ad7999 config setup

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here is a bunch of USB fixes for 3.19-rc5.

    Most of these are gadget driver fixes, along with the xhci driver fix
    that we both reported having problems with, as well as some new device
    ids and other tiny fixes.

    All have been in linux-next with no problems"

    * tag 'usb-3.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (43 commits)
    usb: dwc3: gadget: Stop TRB preparation after limit is reached
    usb: dwc3: gadget: Fix TRB preparation during SG
    usb: phy: mv-usb: fix usb_phy build errors
    usb: serial: handle -ENODEV quietly in generic_submit_read_urb
    usb: serial: silence all non-critical read errors
    USB: console: fix potential use after free
    USB: console: fix uninitialised ldisc semaphore
    usb: gadget: udc: atmel: fix possible oops when unloading module
    usb: gadget: gadgetfs: fix an oops in ep_write()
    usb: phy: Fix deferred probing
    OHCI: add a quirk for ULi M5237 blocking on reset
    uas: Add US_FL_NO_ATA_1X for 2 more Seagate disk enclosures
    uas: Do not blacklist ASM1153 disk enclosures
    usb: gadget: udc: avoid dereference before NULL check in ep_queue
    usb: host: ehci-tegra: request deferred probe when failing to get phy
    uas: disable UAS on Apricorn SATA dongles
    uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS566 with usb-id 0bc2:a013
    uas: Add US_FL_NO_ATA_1X for Seagate devices with usb-id 0bc2:a013
    xhci: Add broken-streams quirk for Fresco Logic FL1000G xhci controllers
    USB: EHCI: adjust error return code
    ...

    Linus Torvalds
     

16 Jan, 2015

3 commits


15 Jan, 2015

14 commits

  • Pull thermal fixes from Zhang Rui:
    "Specifics:

    - bogus type qualifier fix in OF thermal code.
    - Minor fixes on imx and rcar thermal drivers.
    - Update TI SoC thermal maintainer entry.
    - Updated documentation of OF cpufreq cooling register"

    * 'thermal-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
    thermal: rcar: Spelling/grammar: s/drier use .../driver uses ...s/
    thermal: rcar: change type of ctemp in rcar_thermal_update_temp()
    thermal: rcar: fix ENR register value
    Documentation: thermal: document of_cpufreq_cooling_register()
    Thermal: imx: add clk disable/enable for suspend/resume
    MAINTAINERS: update ti-soc-thermal status
    MAINTAINERS: Add linux-omap to list of reviewers for TI Thermal
    thermal: of: Remove bogus type qualifier for of_thermal_get_trip_points()

    Linus Torvalds
     
  • …/balbi/usb into usb-linus

    Felipe writes:

    usb: fixes for v3.19-rc6

    The final set of fixes for v3.19. Two of the fixes are
    related to dwc3 scatter/gather implementation when we have
    more requests queued than available TRBs, while the other
    is a build fix for mv-usb PHY.

    Signed-off-by: Felipe Balbi <balbi@ti.com>

    Greg Kroah-Hartman
     
  • …/johan/usb-serial into usb-linus

    Johan writes:

    USB-serial fixes for v3.18-rc5

    Here are a few fixes for reported problems including a possible
    null-deref on probe with keyspan, a misbehaving modem, and a couple of
    issues with the USB console.

    Some new device IDs are also added.

    Signed-off-by: Johan Hovold <johan@kernel.org>

    Greg Kroah-Hartman
     
  • Pull networking fixes from David Miller:

    1) Don't use uninitialized data in IPVS, from Dan Carpenter.

    2) conntrack race fixes from Pablo Neira Ayuso.

    3) Fix TX hangs with i40e, from Jesse Brandeburg.

    4) Fix budget return from poll calls in dnet and alx, from Eric
    Dumazet.

    5) Fix bugus "if (unlikely(x) < 0)" test in AF_PACKET, from Christoph
    Jaeger.

    6) Fix bug introduced by conversion to list_head in TIPC retransmit
    code, from Jon Paul Maloy.

    7) Don't use GFP_NOIO under spinlock in USB kaweth driver, from Alexey
    Khoroshilov.

    8) Fix bridge build with INET disabled, from Arnd Bergmann.

    9) Fix netlink array overrun for PROBE attributes in openvswitch, from
    Thomas Graf.

    10) Don't hold spinlock across synchronize_irq() in tg3 driver, from
    Prashant Sreedharan.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (44 commits)
    tg3: Release tp->lock before invoking synchronize_irq()
    tg3: tg3_reset_task() needs to use rtnl_lock to synchronize
    tg3: tg3_timer() should grab tp->lock before checking for tp->irq_sync
    team: avoid possible underflow of count_pending value for notify_peers and mcast_rejoin
    openvswitch: packet messages need their own probe attribtue
    i40e: adds FCoE configure option
    cxgb4vf: Fix queue allocation for 40G adapter
    netdevice: Add missing parentheses in macro
    bridge: only provide proxy ARP when CONFIG_INET is enabled
    neighbour: fix base_reachable_time(_ms) not effective immediatly when changed
    net: fec: fix MDIO bus assignement for dual fec SoC's
    xen-netfront: use different locks for Rx and Tx stats
    drivers: net: cpsw: fix multicast flush in dual emac mode
    cxgb4vf: Initialize mdio_addr before using it
    net: Corrected the comment describing the ndo operations to reflect the actual prototype for couple of operations
    usb/kaweth: use GFP_ATOMIC under spin_lock in usb_start_wait_urb()
    MAINTAINERS: add me as ibmveth maintainer
    tipc: fix bug in broadcast retransmit code
    update ip-sysctl.txt documentation (v2)
    net/at91_ether: prepare and unprepare clock
    ...

    Linus Torvalds
     
  • synchronize_irq() can sleep waiting, for pending IRQ handlers so driver
    should release the tp->lock spin lock before invoking synchronize_irq()

    Reported-by: Peter Hurley
    Tested-by: Peter Hurley
    Signed-off-by: Prashant Sreedharan
    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Prashant Sreedharan
     
  • Currently tg3_reset_task() uses only tp->lock for synchronizing with code
    paths like tg3_open() etc. But since tp->lock is released before doing
    synchronize_irq(), rtnl_lock should be taken in tg3_reset_task() to
    synchronize it with other code paths.

    Reported-by: Peter Hurley
    Tested-by: Peter Hurley
    Signed-off-by: Prashant Sreedharan
    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Prashant Sreedharan
     
  • This is to avoid the race between tg3_timer() and the execution paths
    which does not invoke tg3_timer_stop() and releases tp->lock before
    calling synchronize_irq()

    Reported-by: Peter Hurley
    Tested-by: Peter Hurley
    Signed-off-by: Prashant Sreedharan
    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Prashant Sreedharan
     
  • This patch is fixing a race condition that may cause setting
    count_pending to -1, which results in unwanted big bulk of arp messages
    (in case of "notify peers").

    Consider following scenario:

    count_pending == 2
    CPU0 CPU1
    team_notify_peers_work
    atomic_dec_and_test (dec count_pending to 1)
    schedule_delayed_work
    team_notify_peers
    atomic_add (adding 1 to count_pending)
    team_notify_peers_work
    atomic_dec_and_test (dec count_pending to 1)
    schedule_delayed_work
    team_notify_peers_work
    atomic_dec_and_test (dec count_pending to 0)
    schedule_delayed_work
    team_notify_peers_work
    atomic_dec_and_test (dec count_pending to -1)

    Fix this race by using atomic_dec_if_positive - that will prevent
    count_pending running under 0.

    Fixes: fc423ff00df3a1955441 ("team: add peer notification")
    Fixes: 492b200efdd20b8fcfd ("team: add support for sending multicast rejoins")
    Signed-off-by: Jiri Pirko
    Signed-off-by: Jiri Benc
    Signed-off-by: David S. Miller

    Jiri Pirko
     
  • Pull s390 fixes from Martin Schwidefsky:
    "Two small performance tweaks, the plumbing for the execveat system
    call and a couple of bug fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/uprobes: fix user space PER events
    s390/bpf: Fix JMP_JGE_X (A > X) and JMP_JGT_X (A >= X)
    s390/bpf: Fix ALU_NEG (A = -A)
    s390/mm: avoid using pmd_to_page for !USE_SPLIT_PMD_PTLOCKS
    s390/timex: fix get_tod_clock_ext() inline assembly
    s390: wire up execveat syscall
    s390/kernel: use stnsm 255 instead of stosm 0
    s390/vtime: Get rid of redundant WARN_ON
    s390/zcrypt: kernel oops at insmod of the z90crypt device driver

    Linus Torvalds
     
  • Adds FCoE config option I40E_FCOE, so that FCoE can be enabled
    as needed but otherwise have it disabled by default.

    This also eliminate multiple FCoE config checks, instead now just
    one config check for CONFIG_I40E_FCOE.

    The I40E FCoE was added with 3.17 kernel and therefore this patch
    shall be applied to stable 3.17 kernel also.

    CC:
    Signed-off-by: Vasu Dev
    Tested-by: Jim Young
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Vasu Dev
     
  • Signed-off-by: Hariprasad Shenai
    Signed-off-by: David S. Miller

    Hariprasad Shenai
     
  • Pull block layer fixes from Jens Axboe:
    "The major part is an update to the NVMe driver, fixing various issues
    around surprise removal and hung controllers. Most of that is from
    Keith, and parts are simple blk-mq fixes or exports/additions of minor
    functions to aid this effort, and parts are changes directly to the
    NVMe driver.

    Apart from the above, this contains:

    - Small blk-mq change from me, killing an unused member of the
    hardware queue structure.

    - Small fix from Ming Lei, fixing up a few drivers that didn't
    properly check for ERR_PTR() returns from blk_mq_init_queue()"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    NVMe: Fix locking on abort handling
    NVMe: Start and stop h/w queues on reset
    NVMe: Command abort handling fixes
    NVMe: Admin queue removal handling
    NVMe: Reference count admin queue usage
    NVMe: Start all requests
    blk-mq: End unstarted requests on a dying queue
    blk-mq: Allow requests to never expire
    blk-mq: Add helper to abort requeued requests
    blk-mq: Let drivers cancel requeue_work
    blk-mq: Export if requests were started
    blk-mq: Wake tasks entering queue on dying
    blk-mq: get rid of ->cmd_size in the hardware queue
    block: fix checking return value of blk_mq_init_queue
    block: wake up waiters when a queue is marked dying
    NVMe: Fix double free irq
    blk-mq: Export freeze/unfreeze functions
    blk-mq: Exit queue on alloc failure

    Linus Torvalds
     
  • DWC3 gadget sets up a pool of 32 TRBs for each EP during initialization. This
    means, the max TRBs that can be submitted for an EP is fixed to 32. Since the
    request queue for an EP is a linked list, any number of requests can be queued
    to it by the gadget layer. However, the dwc3 driver must not submit TRBs more
    than the pool it has created for. This limit wasn't respected when SG was used
    resulting in submitting more than the max TRBs, eventually leading to
    non-transfer of the TRBs submitted over the max limit.

    Root cause:
    When SG is used, there are two loops iterating to prepare TRBs:
    - Outer loop over the request_list
    - Inner loop over the SG list
    The code was missing break to get out of the outer loop.

    Fixes: eeb720fb21d6 (usb: dwc3: gadget: add support for SG lists)
    Cc: # v3.9+
    Signed-off-by: Amit Virdi
    Signed-off-by: Felipe Balbi

    Amit Virdi
     
  • When scatter gather (SG) is used, multiple TRBs are prepared from one DWC3
    request (dwc3_request). So while preparing TRBs, the 'last' flag should be set
    only when it is the last TRB being prepared from the last dwc3_request entry.

    The current implementation uses list_is_last to check if the dwc3_request is the
    last entry from the request_list. However, list_is_last returns false for the
    last entry too. This is because, while preparing the first TRB from a request,
    the function dwc3_prepare_one_trb modifies the request's next and prev pointers
    while moving the URB to req_queued. Hence, list_is_last always returns false no
    matter what.

    The correct way is not to access the modified pointers of dwc3_request but to
    use list_empty macro instead.

    Fixes: e5ba5ec833aa (usb: dwc3: gadget: fix scatter gather implementation)
    Signed-off-by: Amit Virdi
    Cc: # v3.9+
    Signed-off-by: Felipe Balbi

    Amit Virdi
     

14 Jan, 2015

10 commits

  • Host controllers lacking the required internal vmmc regulator may still
    follow the spec with regard to the LSB of SDHCI_POWER_CONTROL. Set the
    SDHCI_POWER_ON bit when vmmc is enabled to encourage the controller to
    to drive CMD, DAT, SDCLK.

    This fixes a regression observed on some Qualcomm and Nvidia boards
    caused by 5222161 mmc: sdhci: Improve external VDD regulator support.

    Fixes: 52221610dd84 (mmc: sdhci: Improve external VDD regulator support)
    Signed-off-by: Tim Kryger
    Tested-by: Bjorn Andersson
    Signed-off-by: Ulf Hansson

    Tim Kryger
     
  • …inux-soc-thermal into thermal-soc

    Zhang Rui
     
  • On i.MX28, the MDIO bus is shared between the two FEC instances.
    The driver makes sure that the second FEC uses the MDIO bus of the
    first FEC. This is done conditionally if FEC_QUIRK_ENET_MAC is set.
    However, in newer designs, such as Vybrid or i.MX6SX, each FEC MAC
    has its own MDIO bus. Simply removing the quirk FEC_QUIRK_ENET_MAC
    is not an option since other logic, triggered by this quirk, is
    still needed.

    Furthermore, there are board designs which use the same MDIO bus
    for both PHY's even though the second bus would be available on the
    SoC side. Such layout are popular since it saves pins on SoC side.
    Due to the above quirk, those boards currently do work fine. The
    boards in the mainline tree with such a layout are:
    - Freescale Vybrid Tower with TWR-SER2 (vf610-twr.dts)
    - Freescale i.MX6 SoloX SDB Board (imx6sx-sdb.dts)

    This patch adds a new quirk FEC_QUIRK_SINGLE_MDIO for i.MX28, which
    makes sure that the MDIO bus of the first FEC is used in any case.

    However, the boards above do have a SoC with a MDIO bus for each FEC
    instance. But the PHY's are not connected in a 1:1 configuration. A
    proper device tree description is needed to allow the driver to
    figure out where to find its PHY. This patch fixes that shortcoming
    by adding a MDIO bus child node to the first FEC instance, along
    with the two PHY's on that bus, and making use of the phy-handle
    property to add a reference to the PHY's.

    Acked-by: Sascha Hauer
    Signed-off-by: Stefan Agner
    Signed-off-by: David S. Miller

    Stefan Agner
     
  • …git/cooloney/linux-leds

    Pull LED fix from Bryan Wu.

    * 'leds-fixes-for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
    leds: netxbig: fix oops at probe time

    Linus Torvalds
     
  • In netfront the Rx and Tx path are independent and use different
    locks. The Tx lock is held with hard irqs disabled, but Rx lock is
    held with only BH disabled. Since both sides use the same stats lock,
    a deadlock may occur.

    [ INFO: possible irq lock inversion dependency detected ]
    3.16.2 #16 Not tainted
    ---------------------------------------------------------
    swapper/0/0 just changed the state of lock:
    (&(&queue->tx_lock)->rlock){-.....}, at: []
    xennet_tx_interrupt+0x14/0x34
    but this lock took another, HARDIRQ-unsafe lock in the past:
    (&stat->syncp.seq#2){+.-...}
    and interrupts could create inverse lock ordering between them.
    other info that might help us debug this:
    Possible interrupt unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(&stat->syncp.seq#2);
    local_irq_disable();
    lock(&(&queue->tx_lock)->rlock);
    lock(&stat->syncp.seq#2);

    lock(&(&queue->tx_lock)->rlock);

    Using separate locks for the Rx and Tx stats fixes this deadlock.

    Reported-by: Dmitry Piotrovsky
    Signed-off-by: David Vrabel
    Signed-off-by: David S. Miller

    David Vrabel
     
  • Since ALE table is a common resource for both the interfaces in Dual EMAC
    mode and while bringing up the second interface in cpsw_ndo_set_rx_mode()
    all the multicast entries added by the first interface is flushed out and
    only second interface multicast addresses are added. Fixing this by
    flushing multicast addresses based on dual EMAC port vlans which will not
    affect the other emac port multicast addresses.

    Fixes: d9ba8f9 (driver: net: ethernet: cpsw: dual emac interface implementation)
    Cc: # v3.9+
    Signed-off-by: Mugunthan V N
    Signed-off-by: David S. Miller

    Mugunthan V N
     
  • This patch fixes a NULL pointer dereference on led_dat->mode_val. Due to
    this bug, a kernel oops can be observed at probe time on the LaCie 2Big
    and 5Big v2 boards:

    Unable to handle kernel NULL pointer dereference at virtual address 00000008
    [...]
    [] (netxbig_led_probe) from [] (platform_drv_probe+0x4c/0x9c)
    [] (platform_drv_probe) from [] (driver_probe_device+0x98/0x25c)
    [] (driver_probe_device) from [] (__driver_attach+0x8c/0x90)
    [] (__driver_attach) from [] (bus_for_each_dev+0x68/0x94)
    [] (bus_for_each_dev) from [] (bus_add_driver+0x124/0x1dc)
    [] (bus_add_driver) from [] (driver_register+0x78/0xf8)
    [] (driver_register) from [] (do_one_initcall+0x80/0x1cc)
    [] (do_one_initcall) from [] (kernel_init_freeable+0xe4/0x1b4)
    [] (kernel_init_freeable) from [] (kernel_init+0xc/0xec)
    [] (kernel_init) from [] (ret_from_fork+0x14/0x24)
    [...]

    This bug was introduced by commit 588a6a99286ae30afb1339d8bc2163517b1b7dd1
    ("leds: netxbig: fix attribute-creation race").

    Signed-off-by: Simon Guinot
    Cc: # 3.17+
    Acked-by: Johan Hovold
    Signed-off-by: Bryan Wu

    Simon Guinot
     
  • In commit 5ad24def21b205a8 ("cxgb4vf: Fix ethtool get_settings for VF driver")
    mdio_addr of port_info structure was used unininitialzed. Fixing it.

    Signed-off-by: Hariprasad Shenai
    Signed-off-by: David S. Miller

    Hariprasad Shenai
     
  • The "smemc" clock is removed on BG2Q SoCs. In fact, bit19 of clkenable
    register is for nfc. Current code use bit19 for non-exist "smemc"
    incorrectly, this prevents eMMC from working due to the sdhci's
    "core" clk is still gated.

    Signed-off-by: Jisheng Zhang
    Cc: stable@vger.kernel.org # 3.16+
    Signed-off-by: Michael Turquette

    Jisheng Zhang
     
  • All slow clk users are not properly claiming it (get + prepare + enable)
    before using it.
    If all users properly claiming this clock release it, the clock is
    disabled, but faulty users still depends on it, and the system hangs.

    This fix prevents the slow clock from being disabled, and should solve the
    hanging issue, but offending drivers should be patched to properly claim
    this clock.

    Signed-off-by: Boris Brezillon
    Reported-by: Bo Shen
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael Turquette

    Boris Brezillon