05 Oct, 2015

2 commits


27 Sep, 2015

10 commits

  • Pull irq fix from Thomass Gleixner:
    "A bugfix for the atmel aic5 irq chip driver which caches the wrong
    data and thereby breaking resume"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip/atmel-aic5: Use per chip mask caches in mask/unmask()

    Linus Torvalds
     
  • Pull ARM SoC fixes from Olof Johansson:
    "Our first real batch of fixes this release cycle. Nothing really
    concerning, and diffstat is a bit inflated due to some DT contents
    moving around on STi platforms.

    There's a collection of them here:

    - A fixup for a build breakage that hits on arm64 allmodconfig in
    QCOM SCM firmware drivers
    - MMC fixes for OMAP that had quite a bit of breakage this merge
    window.
    - Misc build/warning fixes on PXA and OMAP
    - A couple of minor fixes for Beagleboard X15 which is now starting
    to see a few more users in the wild"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (31 commits)
    ARM: sti: dt: adapt DT to fix probe/bind issues in DRM driver
    ARM: dts: fix omap2+ address translation for pbias
    firmware: qcom: scm: Add function stubs for ARM64
    ARM: dts: am57xx-beagle-x15: use palmas-usb for USB2
    ARM: omap2plus_defconfig: enable GPIO_PCA953X
    ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets
    ARM: OMAP2+: AM43XX: Enable autoidle for clks in am43xx_init_late
    ARM: dts: am57xx-beagle-x15: Update Phy supplies
    ARM: pxa: balloon3: Fix build error
    ARM: dts: Fixup model name for HP t410 dts
    ARM: dts: DRA7: fix a typo in ethernet
    ARM: omap2plus_defconfig: make PCF857x built-in
    ARM: dts: Use ti,pbias compatible string for pbias
    ARM: OMAP5: Cleanup options for SoC only build
    ARM: DRA7: Select missing options for SoC only build
    ARM: OMAP2+: board-generic: Remove stale of_irq macros
    ARM: OMAP4+: PM: erratum is used by OMAP5 and DRA7 as well
    ARM: dts: omap3-igep: Move eth IRQ pinmux to IGEPv2 common dtsi
    ARM: dts: am57xx-beagle-x15: Add wakeup irq for mcp79410
    ARM: dts: am335x-phycore-som: Fix mpu voltage
    ...

    Linus Torvalds
     
  • …/git/tmlind/linux-omap into fixes

    Fixes for omaps for v4.3-rc cycle:

    - Two more patches to fix most of the MMC regressions with the
    PBIAS regulator changes. At least two MMC driver related issues
    still seems to remain for omap3 legacy booting and omap4 duovero.
    Note that the dts changes depend on a recent regulator fix, and
    are based on the regulator commit now in mainline kernel

    - Enable autoidle for am43xx clocks to prevent clocks from staying
    always on

    - Fix i2c5 pinctrl offsets for omap5-uevm

    - Enable PCA953X as that's needed for HDMI to work on omap5

    - Update phy supplies for beagle x15 beta board

    - Use palmas-usb for on beagle x15 to start using the related
    driver that recently got merged

    * tag 'omap-for-v4.3/fixes-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: dts: fix omap2+ address translation for pbias
    ARM: dts: am57xx-beagle-x15: use palmas-usb for USB2
    ARM: omap2plus_defconfig: enable GPIO_PCA953X
    ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets
    ARM: OMAP2+: AM43XX: Enable autoidle for clks in am43xx_init_late
    ARM: dts: am57xx-beagle-x15: Update Phy supplies
    regulator: pbias: program pbias register offset in pbias driver
    ARM: omap2plus_defconfig: Enable MUSB DMA support
    ARM: DRA752: Add ID detect for ES2.0
    ARM: OMAP3: vc: fix 'or' always true warning
    ARM: OMAP2+: Fix booting if no timer parent clock is available
    ARM: OMAP2+: omap-device: fix race deferred probe of omap_hsmmc vs omap_device_late_init

    Signed-off-by: Olof Johansson <olof@lixom.net>

    Olof Johansson
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes the following issues:

    - check the return value of platform_get_irq as signed int in xgene.

    - skip adf_dev_restore on virtual functions in qat.

    - fix double-free with backlogged requests in marvell_cesa"

    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    hwrng: xgene - fix handling platform_get_irq
    crypto: qat - VF should never trigger SBR on PH
    crypto: marvell - properly handle CRYPTO_TFM_REQ_MAY_BACKLOG-flagged requests

    Linus Torvalds
     
  • Pull SCSI target fixes from Nicholas Bellinger:
    "This includes a iser-target series from Jenny + Sagi @ Mellanox that
    addresses the few remaining active I/O shutdown bugs, along with a
    patch to support zero-copy for immediate data payloads that gives a
    nice performance improvement for small block WRITEs.

    Also included are some recent >= v4.2 regression bug-fixes. The most
    notable is a RCU conversion regression for SPC-3 PR registrations, and
    recent removal of obsolete RFC-3720 markers that introduced a login
    regression bug with MSFT iSCSI initiators.

    Thanks to everyone who has been testing + reporting bugs for v4.x"

    * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
    iscsi-target: Avoid OFMarker + IFMarker negotiation
    target: Make TCM_WRITE_PROTECT failure honor D_SENSE bit
    target: Fix target_sense_desc_format NULL pointer dereference
    target: Propigate backend read-only to core_tpg_add_lun
    target: Fix PR registration + APTPL RCU conversion regression
    iser-target: Skip data copy if all the command data comes as immediate
    iser-target: Change the recv buffers posting logic
    iser-target: Fix pending connections handling in target stack shutdown sequnce
    iser-target: Remove np_ prefix from isert_np members
    iser-target: Remove unused variables
    iser-target: Put the reference on commands waiting for unsol data
    iser-target: remove command with state ISTATE_REMOVE

    Linus Torvalds
     
  • Pull USB fixes from Greg KH:
    "Here are some USB driver fixes for 4.3-rc3.

    There's the usual assortment of new device ids, combined with xhci and
    gadget driver fixes. Full details in the shortlog. All of these have
    been in linux-next with no reported problems"

    * tag 'usb-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (34 commits)
    MAINTAINERS: remove amd5536udc USB gadget driver maintainer
    USB: whiteheat: fix potential null-deref at probe
    xhci: init command timeout timer earlier to avoid deleting it uninitialized
    xhci: change xhci 1.0 only restrictions to support xhci 1.1
    usb: xhci: exit early in xhci_setup_device() if we're halted or dying
    usb: xhci: stop everything on the first call to xhci_stop
    usb: xhci: Clear XHCI_STATE_DYING on start
    usb: xhci: lock mutex on xhci_stop
    xhci: Move xhci_pme_quirk() behind #ifdef CONFIG_PM
    xhci: give command abortion one more chance before killing xhci
    usb: Use the USB_SS_MULT() macro to get the burst multiplier.
    usb: dwc3: gadget: Fix BUG in RT config
    usb: musb: fix cppi channel teardown for isoch transfer
    usb: phy: isp1301: Export I2C module alias information
    usb: gadget: drop null test before destroy functions
    usb: gadget: dummy_hcd: in transfer(), return data sent, not limit
    usb: gadget: dummy_hcd: fix rescan logic for transfer
    usb: gadget: dummy_hcd: fix unneeded else-if condition
    usb: gadget: dummy_hcd: emulate sending zlp in packet logic
    usb: musb: dsps: fix polling in device-only mode
    ...

    Linus Torvalds
     
  • Pull serial driver fix from Greg KH:
    "Here is one serial driver fix for 4.3-rc3 that resolves a module
    loading issue due to splitting up of the 8250 driver into smaller
    pieces. It's been in linux-next with no reported problems"

    * tag 'tty-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    tty: serial: Add missing module license for 8250_base.ko

    Linus Torvalds
     
  • Pull staging driver fixes from Greg KH:
    "Here are some tiny staging driver and documentation fixes for 4.3-rc3.

    All of these resolve reported issues that people have found and have
    been in the linux-next tree for a while with no problems"

    * tag 'staging-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    MAINTAINERS: Update email address for Martyn Welch
    staging: ion: fix corruption of ion_import_dma_buf
    staging: dgap: Remove myself from the MAINTAINERS file
    staging: most: Add dependency to HAS_IOMEM
    staging: unisys: remove reference of visorutil
    staging: unisys: visornic: handle error return from device registration
    staging: unisys: stop device registration before visorbus registration
    staging: unisys: visorbus: Unregister driver on error
    staging: unisys: visornic: Fix receive bytes statistics
    staging: unisys: unregister netdev when create debugfs fails
    staging: fbtft: replace master->setup() with spi_setup()
    staging: fbtft: fix 9-bit SPI support detection
    staging/lustre: change Lustre URLs and mailing list
    staging/android: Update ION TODO per LPC discussion
    Staging: most: MOST and MOSTCORE should depend on HAS_DMA
    staging: most: fix HDM_USB dependencies and build errors

    Linus Torvalds
     
  • Pull driver core fix from Greg KH:
    "Here is one driver core fix for 4.3-rc3 that resolves a reported oops"

    * tag 'driver-core-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    cpu/cacheinfo: Fix teardown path

    Linus Torvalds
     
  • Pull char/misc driver fixes from Greg KH:
    "Here's some tiny char and misc driver fixes that resolve some reported
    errors for 4.3-rc3.

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

    * tag 'char-misc-4.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
    extcon: Fix attached value returned by is_extcon_changed
    Drivers: hv: vmbus: fix init_vp_index() for reloading hv_netvsc
    mei: fix debugfs files leak on error path
    thunderbolt: Allow loading of module on recent Apple MacBooks with thunderbolt 2 controller

    Linus Torvalds
     

26 Sep, 2015

7 commits

  • Pull networking fixes from David Miller:

    1) When we run a tap on netlink sockets, we have to copy mmap'd SKBs
    instead of cloning them. From Daniel Borkmann.

    2) When converting classical BPF into eBPF, fix the setting of the
    source reg to BPF_REG_X. From Tycho Andersen.

    3) Fix igmpv3/mldv2 report parsing in the bridge multicast code, from
    Linus Lussing.

    4) Fix dst refcounting for ipv6 tunnels, from Martin KaFai Lau.

    5) Set NLM_F_REPLACE flag properly when replacing ipv6 routes, from
    Roopa Prabhu.

    6) Add some new cxgb4 PCI device IDs, from Hariprasad Shenai.

    7) Fix headroom tests and SKB leaks in ipv6 fragmentation code, from
    Florian Westphal.

    8) Check DMA mapping errors in bna driver, from Ivan Vecera.

    9) Several 8139cp bug fixes (dev_kfree_skb_any in interrupt context,
    misclearing of interrupt status in TX timeout handler, etc.) from
    David Woodhouse.

    10) In tipc, reset SKB header pointer after skb_linearize(), from Erik
    Hugne.

    11) Fix autobind races et al. in netlink code, from Herbert Xu with
    help from Tejun Heo and others.

    12) Missing SET_NETDEV_DEV in sunvnet driver, from Sowmini Varadhan.

    13) Fix various races in timewait timer and reqsk_queue_hadh_req, from
    Eric Dumazet.

    14) Fix array overruns in mac80211, from Johannes Berg and Dan
    Carpenter.

    15) Fix data race in rhashtable_rehash_one(), from Dmitriy Vyukov.

    16) Fix race between poll_one_napi and napi_disable, from Neil Horman.

    17) Fix byte order in geneve tunnel port config, from John W Linville.

    18) Fix handling of ARP replies over lightweight tunnels, from Jiri
    Benc.

    19) We can loop when fib rule dumps cross multiple SKBs, fix from Wilson
    Kok and Roopa Prabhu.

    20) Several reference count handling bug fixes in the PHY/MDIO layer
    from Russel King.

    21) Fix lockdep splat in ppp_dev_uninit(), from Guillaume Nault.

    22) Fix crash in icmp_route_lookup(), from David Ahern.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
    net: Fix panic in icmp_route_lookup
    net: update docbook comment for __mdiobus_register()
    ppp: fix lockdep splat in ppp_dev_uninit()
    net: via/Kconfig: GENERIC_PCI_IOMAP required if PCI not selected
    phy: marvell: add link partner advertised modes
    net: fix net_device refcounting
    phy: add phy_device_remove()
    phy: fixed-phy: properly validate phy in fixed_phy_update_state()
    net: fix phy refcounting in a bunch of drivers
    of_mdio: fix MDIO phy device refcounting
    phy: add proper phy struct device refcounting
    phy: fix mdiobus module safety
    net: dsa: fix of_mdio_find_bus() device refcount leak
    phy: fix of_mdio_find_bus() device refcount leak
    ip6_tunnel: Reduce log level in ip6_tnl_err() to debug
    ip6_gre: Reduce log level in ip6gre_err() to debug
    fib_rules: fix fib rule dumps across multiple skbs
    bnx2x: byte swap rss_key to comply to Toeplitz specs
    net: revert "net_sched: move tp->root allocation into fw_init()"
    lwtunnel: remove source and destination UDP port config option
    ...

    Linus Torvalds
     
  • Update the docbook comment for __mdiobus_register() to include the new
    module owner argument. This resolves a warning found by the 0-day
    builder.

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • ppp_dev_uninit() locks all_ppp_mutex while under rtnl mutex protection.
    ppp_create_interface() must then lock these mutexes in that same order
    to avoid possible deadlock.

    [ 120.880011] ======================================================
    [ 120.880011] [ INFO: possible circular locking dependency detected ]
    [ 120.880011] 4.2.0 #1 Not tainted
    [ 120.880011] -------------------------------------------------------
    [ 120.880011] ppp-apitest/15827 is trying to acquire lock:
    [ 120.880011] (&pn->all_ppp_mutex){+.+.+.}, at: [] ppp_dev_uninit+0x64/0xb0 [ppp_generic]
    [ 120.880011]
    [ 120.880011] but task is already holding lock:
    [ 120.880011] (rtnl_mutex){+.+.+.}, at: [] rtnl_lock+0x12/0x14
    [ 120.880011]
    [ 120.880011] which lock already depends on the new lock.
    [ 120.880011]
    [ 120.880011]
    [ 120.880011] the existing dependency chain (in reverse order) is:
    [ 120.880011]
    [ 120.880011] -> #1 (rtnl_mutex){+.+.+.}:
    [ 120.880011] [] lock_acquire+0xcf/0x10e
    [ 120.880011] [] mutex_lock_nested+0x56/0x341
    [ 120.880011] [] rtnl_lock+0x12/0x14
    [ 120.880011] [] register_netdev+0x11/0x27
    [ 120.880011] [] ppp_ioctl+0x289/0xc98 [ppp_generic]
    [ 120.880011] [] do_vfs_ioctl+0x4ea/0x532
    [ 120.880011] [] SyS_ioctl+0x4e/0x7d
    [ 120.880011] [] entry_SYSCALL_64_fastpath+0x12/0x6f
    [ 120.880011]
    [ 120.880011] -> #0 (&pn->all_ppp_mutex){+.+.+.}:
    [ 120.880011] [] __lock_acquire+0xb07/0xe76
    [ 120.880011] [] lock_acquire+0xcf/0x10e
    [ 120.880011] [] mutex_lock_nested+0x56/0x341
    [ 120.880011] [] ppp_dev_uninit+0x64/0xb0 [ppp_generic]
    [ 120.880011] [] rollback_registered_many+0x19e/0x252
    [ 120.880011] [] rollback_registered+0x29/0x38
    [ 120.880011] [] unregister_netdevice_queue+0x6a/0x77
    [ 120.880011] [] ppp_release+0x42/0x79 [ppp_generic]
    [ 120.880011] [] __fput+0xec/0x192
    [ 120.880011] [] ____fput+0x9/0xb
    [ 120.880011] [] task_work_run+0x66/0x80
    [ 120.880011] [] prepare_exit_to_usermode+0x8c/0xa7
    [ 120.880011] [] syscall_return_slowpath+0xe4/0x104
    [ 120.880011] [] int_ret_from_sys_call+0x25/0x9f
    [ 120.880011]
    [ 120.880011] other info that might help us debug this:
    [ 120.880011]
    [ 120.880011] Possible unsafe locking scenario:
    [ 120.880011]
    [ 120.880011] CPU0 CPU1
    [ 120.880011] ---- ----
    [ 120.880011] lock(rtnl_mutex);
    [ 120.880011] lock(&pn->all_ppp_mutex);
    [ 120.880011] lock(rtnl_mutex);
    [ 120.880011] lock(&pn->all_ppp_mutex);
    [ 120.880011]
    [ 120.880011] *** DEADLOCK ***

    Fixes: 8cb775bc0a34 ("ppp: fix device unregistration upon netns deletion")
    Reported-by: Sedat Dilek
    Tested-by: Sedat Dilek
    Signed-off-by: Guillaume Nault
    Signed-off-by: David S. Miller

    Guillaume Nault
     
  • The builds of allmodconfig of avr32 is failing with:

    drivers/net/ethernet/via/via-rhine.c:1098:2: error: implicit declaration
    of function 'pci_iomap' [-Werror=implicit-function-declaration]
    drivers/net/ethernet/via/via-rhine.c:1119:2: error: implicit declaration
    of function 'pci_iounmap' [-Werror=implicit-function-declaration]

    The generic empty pci_iomap and pci_iounmap is used only if CONFIG_PCI
    is not defined and CONFIG_GENERIC_PCI_IOMAP is defined.

    Add GENERIC_PCI_IOMAP in the dependency list for VIA_RHINE as we are
    getting build failure when CONFIG_PCI and CONFIG_GENERIC_PCI_IOMAP both
    are not defined.

    Signed-off-by: Sudip Mukherjee
    Signed-off-by: David S. Miller

    Sudip Mukherjee
     
  • Read the standard link partner advertisment registers and store it in
    phydev->lp_advertising, so ethtool can report this information to
    userspace via ethtool. Zero it as per genphy if autonegotiation is
    disabled. Tested with a Marvell 88E1512 PHY.

    Signed-off-by: Russell King
    Reviewed-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Russell King
     
  • Pull PCI fixes from Bjorn Helgaas:
    "These are fixes for things we merged for v4.3 (VPD, MSI, and bridge
    window management), and a new Renesas R8A7794 SoC device ID.

    Details:

    Resource management:
    - Revert pci_read_bridge_bases() unification (Bjorn Helgaas)
    - Clear IORESOURCE_UNSET when clipping a bridge window (Bjorn
    Helgaas)

    MSI:
    - Fix MSI IRQ domains for VFs on virtual buses (Alex Williamson)

    Renesas R-Car host bridge driver:
    - Add R8A7794 support (Sergei Shtylyov)

    Miscellaneous:
    - Fix devfn for VPD access through function 0 (Alex Williamson)
    - Use function 0 VPD only for identical functions (Alex Williamson)"

    * tag 'pci-v4.3-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: rcar: Add R8A7794 support
    PCI: Use function 0 VPD for identical functions, regular VPD for others
    PCI: Fix devfn for VPD access through function 0
    PCI/MSI: Fix MSI IRQ domains for VFs on virtual buses
    PCI: Clear IORESOURCE_UNSET when clipping a bridge window
    PCI: Revert "PCI: Call pci_read_bridge_bases() from core instead of arch code"

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:
    - Wire up sys_membarrier()
    - cxl: Fix lockdep warning while creating afu_err_buff from Vaibhav

    * tag 'powerpc-4.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    cxl: Fix lockdep warning while creating afu_err_buff attribute
    powerpc: Wire up sys_membarrier()

    Linus Torvalds
     

25 Sep, 2015

21 commits

  • This patch fixes a v4.2+ regression introduced by commit c04a6091
    that removed support for obsolete sync-and-steering markers usage
    as originally defined in RFC-3720.

    The regression would involve attempting to send OFMarker=No +
    IFMarker=No keys during opertional negotiation login phase,
    including when initiators did not actually propose these keys.

    The result for MSFT iSCSI initiators would be random junk in
    TCP stream after the last successful login request was been sent
    signaling the move to full feature phase (FFP) operation.

    To address this bug, go ahead and avoid negotiating these keys
    by default unless the initiator explicitly proposes them, but
    still respond to them with 'No' if they are proposed.

    Reported-by: Dragan Milivojević
    Bisected-by: Christophe Vu-Brugier
    Tested-by: Christophe Vu-Brugier
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch changes transport_lookup_cmd_lun() to obtain
    se_lun->lun_ref + se_cmd->se_device rcu_dereference during
    TCM_WRITE_PROTECT -> CHECK_CONDITION failure status.

    Do this to ensure the active control D_SENSE mode page bit
    is being honored.

    Reported-by: Sagi Grimberg
    Reviewed-by: Sagi Grimberg
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch allows target_sense_desc_format() to be called without a
    valid se_device pointer, which can occur during an early exception
    ahead of transport_lookup_cmd_lun() setting up se_cmd->se_device.

    This addresses a v4.3-rc1 specific NULL pointer dereference
    regression introduced by commit 4e4937e8.

    Cc: Sagi Grimberg
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds a DF_READ_ONLY flag that is used by IBLOCK to
    signal when a backend has been set to read-only mode, in order
    to propigate read-only status up to core_tpg_add_lun() for all
    future LUN fabric exports.

    With this is place, existing emulation for reporting read-only
    in spc_emulate_modesense() and normal transport_lookup_cmd_lun()
    TCM_WRITE_PROTECTED status checking just works as expected.

    Reported-by: Joeue Deng
    Reported-by: Andy Grover
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch fixes a v4.2+ regression introduced by commit 79dc9c9e86
    where lookup of t10_pr_registration->pr_reg_deve and associated
    ->pr_kref get was missing from __core_scsi3_do_alloc_registration(),
    which is responsible for setting DEF_PR_REG_ACTIVE.

    This would result in REGISTER operations completing successfully,
    but subsequent core_scsi3_pr_seq_non_holder() checking would fail
    with !DEF_PR_REG_ACTIVE -> RESERVATION CONFLICT status.

    Update __core_scsi3_add_registration() to drop ->pr_kref reference
    after registration and any optional ALL_TG_PT=1 processing has
    completed. Update core_scsi3_decode_spec_i_port() to release
    the new parent local_pr_reg->pr_kref as well.

    Also, update __core_scsi3_check_aptpl_registration() to perform
    the same target_nacl_find_deve() lookup + ->pr_kref get, now that
    __core_scsi3_add_registration() expects to drop the reference.

    Finally, since there are cases when se_dev_entry->se_lun_acl can
    still be dereferenced in core_scsi3_lunacl_undepend_item() while
    holding ->pr_kref, go ahead and move explicit rcu_assign_pointer()
    NULL assignments within core_disable_device_list_for_node() until
    after orig->pr_comp finishes.

    Reported-by: Scott L. Lykens
    Tested-by: Scott L. Lykens
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Lee Duncan
    Cc: # v4.2+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • Add a phy_device_remove() function to complement phy_device_register(),
    which undoes the effects of phy_device_register() by removing the phy
    device from visibility, but not freeing it.

    This allows these details to be moved out of the mdio bus code into
    the phy code where this action belongs.

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • Validate that the phy_device passed into fixed_phy_update_state() is a
    fixed-phy device before walking the list of phys for a fixed phy at the
    same address.

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • of_phy_find_device() increments the phy struct device refcount, which
    we need to properly balance. Add code to network drivers using this
    function to ensure that the struct device refcount is correctly
    balanced.

    For xgene, looking back in the history, we should be able to use
    of_phy_connect() with a zero flags argument for the DT case as this is
    how the driver used to operate prior to de7b5b3d790a ("net: eth: xgene:
    change APM X-Gene SoC platform ethernet to support ACPI").

    This leaves the Cavium Thunder BGX unfixed; fixing this driver is a
    complicated task, one which the maintainers need to be involved with.

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • bus_find_device() is defined as:

    * This is similar to the bus_for_each_dev() function above, but it
    * returns a reference to a device that is 'found' for later use, as
    * determined by the @match callback.

    and it does indeed return a reference-counted pointer to the device:

    while ((dev = next_device(&i)))
    if (match(dev, data) && get_device(dev))
    ^^^^^^^^^^^^^^^
    break;
    klist_iter_exit(&i);
    return dev;

    What that means is that when we're done with the struct device, we must
    drop that reference. Neither of_phy_connect() nor of_phy_attach() did
    this when phy_connect_direct() or phy_attach_direct() failed.

    With our previous patch, phy_connect_direct() and phy_attach_direct()
    take a new refcount on the phy device when successful, so we can drop
    our local reference immediatley after these functions, whether or not
    they succeeded.

    Signed-off-by: Russell King
    Acked-by: Rob Herring
    Signed-off-by: David S. Miller

    Russell King
     
  • Take a refcount on the phy struct device when the phy device is attached
    to a network device, and drop it after it's detached. This ensures that
    a refcount is held on the phy device while the device is being used by
    a network device, thereby preventing the phy_device from being
    unexpectedly kfree()'d by phy_device_release().

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • Re-implement the mdiobus module refcounting to ensure that we actually
    ensure that the mdiobus module code does not go away while we might call
    into it.

    The old scheme using bus->dev.driver was buggy, because bus->dev is a
    class device which never has a struct device_driver associated with it,
    and hence the associated code trying to obtain a refcount did nothing
    useful.

    Instead, take the approach that other subsystems do: pass the module
    when calling mdiobus_register(), and record that in the mii_bus struct.
    When we need to increment the module use count in the phy code, use
    this stored pointer. When the phy is deteched, drop the module
    refcount, remembering that the phy device might go away at that point.

    This doesn't stop the mii_bus going away while there are in-use phys -
    it merely stops the underlying code vanishing.

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • of_mdio_find_bus() leaks a struct device refcount, caused by using
    class_find_device() and not realising that the device reference has
    its refcount incremented:

    * Note, you will need to drop the reference with put_device() after use.
    ...
    while ((dev = class_dev_iter_next(&iter))) {
    if (match(dev, data)) {
    get_device(dev);
    break;
    }

    Update the comment, and arrange for the phy code to drop this refcount
    when disposing of a reference to it.

    Signed-off-by: Russell King
    Signed-off-by: David S. Miller

    Russell King
     
  • Pull thermal management fixes from Zhang Rui:

    - Power allocator governor changes to allow binding on thermal zones
    with missing power estimates information. From Javi Merino.

    - Add compile test flags on thermal drivers that allow it without
    producing compilation errors. From Eduardo Valentin.

    - Fixes around memory allocation on cpu_cooling. From Javi Merino.

    - Fix on db8500 cpufreq code to allow autoload. From Luis de
    Bethencourt.

    - Maintainer entries for cpu cooling device

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux:
    thermal: power_allocator: exit early if there are no cooling devices
    thermal: power_allocator: don't require tzp to be present for the thermal zone
    thermal: power_allocator: relax the requirement of two passive trip points
    thermal: power_allocator: relax the requirement of a sustainable_power in tzp
    thermal: Add a function to get the minimum power
    thermal: cpu_cooling: free power table on error or when unregistering
    thermal: cpu_cooling: don't call kcalloc() under rcu_read_lock
    thermal: db8500_cpufreq_cooling: Fix module autoload for OF platform driver
    thermal: cpu_cooling: Add MAINTAINERS entry
    thermal: ti-soc: Kconfig fix to avoid menu showing wrongly
    thermal: ti-soc: allow compile test
    thermal: qcom_spmi: allow compile test
    thermal: exynos: allow compile test
    thermal: armada: allow compile test
    thermal: dove: allow compile test
    thermal: kirkwood: allow compile test
    thermal: rockchip: allow compile test
    thermal: spear: allow compile test
    thermal: hisi: allow compile test
    thermal: Fix thermal_zone_of_sensor_register to match documentation

    Linus Torvalds
     
  • Pull DeviceTree fixes from Rob Herring:
    - Silence bogus warning for of_irq_parse_pci
    - Fix typo in ARM idle-states binding doc and dts files
    - Various minor binding documentation updates

    * tag 'devicetree-fixes-for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
    Documentation: arm: Fix typo in the idle-states bindings examples
    gpio: mention in DT binding doc that -gpio is deprecated
    of_pci_irq: Silence bogus "of_irq_parse_pci() failed ..." messages.
    devicetree: bindings: Extend the bma180 bindings with bma250 info
    of: thermal: Mark cooling-*-level properties optional
    of: thermal: Fix inconsitency between cooling-*-state and cooling-*-level
    Docs: dt: add #msi-cells to GICv3 ITS binding
    of: add vendor prefix for Socionext Inc.

    Linus Torvalds
     
  • Tony Lindgren
     
  • Pull drm fixes from Dave Airlie:
    "Most of the GPU drivers people were at XDC last week, so I didn't get
    much to send, so I let it rollover until this week.

    Also Alex was away for 3 weeks so amdgpu/radeon got a bit more stuff
    than usual in one go.

    I've been trying to figure out some 4.2 issues with i915 still (that
    are fixed in 4.3, but bisecting ends up in a merge commit). Hopefully
    next week I or i915 people can work that out"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: (46 commits)
    drm: Allow also control clients to check the drm version
    drm/vmwgfx: Fix uninitialized return in vmw_kms_helper_dirty()
    drm/vmwgfx: Fix uninitialized return in vmw_cotable_unbind()
    drm/layerscape: fix handling fsl_dcu_drm_plane_index result
    drm/mgag200: Fix driver_load error handling
    drm/mgag200: Fix error handling paths in fbdev driver
    drm/qxl: only report first monitor as connected if we have no state
    drm/radeon: add quirk for MSI R7 370
    drm/amdgpu: Sprinkle drm_modeset_lock_all to appease locking checks
    drm/radeon: Sprinkle drm_modeset_lock_all to appease locking checks
    drm/amdgpu: sync ce and me with SWITCH_BUFFER(2)
    drm/amdgpu: integer overflow in amdgpu_mode_dumb_create()
    drm/amdgpu: info leak in amdgpu_gem_metadata_ioctl()
    drm/amdgpu: integer overflow in amdgpu_info_ioctl()
    drm/amdgpu: unwind properly in amdgpu_cs_parser_init()
    drm/amdgpu: Fix max_vblank_count value for current display engines
    drm/amdgpu: use kmemdup rather than duplicating its implementation
    drm/amdgpu: fix UVD suspend and resume for VI APU
    drm/amdgpu: fix the UVD suspend sequence order
    drm/amdgpu: make UVD handle checking more strict
    ...

    Linus Torvalds
     
  • Add Renesas R8A7794 SoC support to the Renesas R-Car gen2 PCI driver.

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Bjorn Helgaas
    Acked-by: Simon Horman

    Sergei Shtylyov
     
  • 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function 0")
    added PCI_DEV_FLAGS_VPD_REF_F0. Previously, we set the flag on every
    non-zero function of quirked devices. If a function turned out to be
    different from function 0, i.e., it had a different class, vendor ID, or
    device ID, the flag remained set but we didn't make VPD accessible at all.

    Flip this around so we only set PCI_DEV_FLAGS_VPD_REF_F0 for functions that
    are identical to function 0, and allow regular VPD access for any other
    functions.

    [bhelgaas: changelog, stable tag]
    Fixes: 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function 0")
    Signed-off-by: Alex Williamson
    Signed-off-by: Bjorn Helgaas
    Acked-by: Myron Stowe
    Acked-by: Mark Rustad
    CC: stable@vger.kernel.org

    Alex Williamson
     
  • Commit 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function
    0") passes PCI_SLOT(devfn) for the devfn parameter of pci_get_slot().
    Generally this works because we're fairly well guaranteed that a PCIe
    device is at slot address 0, but for the general case, including
    conventional PCI, it's incorrect. We need to get the slot and then convert
    it back into a devfn.

    Fixes: 932c435caba8 ("PCI: Add dev_flags bit to access VPD through function 0")
    Signed-off-by: Alex Williamson
    Signed-off-by: Bjorn Helgaas
    Acked-by: Myron Stowe
    Acked-by: Mark Rustad
    CC: stable@vger.kernel.org

    Alex Williamson
     
  • SR-IOV creates a virtual bus where bus->self is NULL. When we add VFs and
    scan for an MSI domain, pci_set_bus_msi_domain() dereferences bus->self,
    which causes a kernel NULL pointer dereference oops.

    Scan up to the parent bus until we find a real bridge where we can get the
    MSI domain.

    [bhelgaas: changelog]
    Fixes: 44aa0c657e3e ("PCI/MSI: Add hooks to populate the msi_domain field")
    Tested-by: Joerg Roedel
    Signed-off-by: Alex Williamson
    Signed-off-by: Bjorn Helgaas
    Acked-by: Marc Zyngier

    Alex Williamson
     
  • After a good amount of debugging, I found bnx2x was byte swaping
    the 40 bytes of rss_key.

    If we byte swap the key, then bnx2x generates hashes matching
    MSDN specs as documented in (Verifying the RSS Hash Calculation)

    https://msdn.microsoft.com/en-us/library/windows/hardware/ff571021%
    28v=vs.85%29.aspx

    It is mostly a non issue, unless we want to mix different NIC
    in a host, and want consistent hashing among all of them, ie
    if they all use the boot time generated rss key, or if some application
    is choosing specific tuple(s) so that incoming traffic lands into known
    rx queue(s).

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet