1. 11 Dec, 2016 6 commits
    • Lino Sanfilippo's avatar
      net: ethernet: stmmac: remove private tx queue lock · 739c8e14
      Lino Sanfilippo authored
      The driver uses a private lock for synchronization of the xmit function and
      the xmit completion handler, but since the NETIF_F_LLTX flag is not set,
      the xmit function is also called with the xmit_lock held.
      
      On the other hand the completion handler uses the reverse locking order by
      first taking the private lock and (in case that the tx queue had been
      stopped) then the xmit_lock.
      
      Improve the locking by removing the private lock and using only the
      xmit_lock for synchronization instead.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      739c8e14
    • Lino Sanfilippo's avatar
      net: ethernet: sxgbe: remove private tx queue lock · 980f1404
      Lino Sanfilippo authored
      The driver uses a private lock for synchronization of the xmit function and
      the xmit completion handler, but since the NETIF_F_LLTX flag is not set,
      the xmit function is also called with the xmit_lock held.
      
      On the other hand the completion handler uses the reverse locking order by
      first taking the private lock and (in case that the tx queue had been
      stopped) then the xmit_lock.
      
      Improve the locking by removing the private lock and using only the
      xmit_lock for synchronization instead.
      Signed-off-by: default avatarLino Sanfilippo <LinoSanfilippo@gmx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      980f1404
    • David S. Miller's avatar
      Merge branch 'bridge-fast-ageing-on-topology-change' · c280b482
      David S. Miller authored
      Vivien Didelot says:
      
      ====================
      net: bridge: fast ageing on topology change
      
      802.1D [1] specifies that the bridges in a network must use a short
      value to age out dynamic entries in the Filtering Database for a period,
      once a topology change has been communicated by the root bridge.
      
      This patchset fixes this for the in-kernel STP implementation.
      
      Once the topology change flag is set in a net_bridge instance, the
      ageing time value is shorten to twice the forward delay used by the
      topology.
      
      When the topology change flag is cleared, the ageing time configured for
      the bridge is restored.
      
      To accomplish that, a new bridge_ageing_time member is added to the
      net_bridge structure, to store the user configured bridge ageing time.
      
      Two helpers are added to offload the ageing time and set the topology
      change flag in the net_bridge instance. Then the required logic is added
      in the topology change helper if in-kernel STP is used.
      
      This has been tested on the following topology:
      
          +--------------+
          | root bridge  |
          |  1  2  3  4  |
          +--+--+--+--+--+
             |  |  |  |      +--------+
             |  |  |  +------| laptop |
             |  |  |         +--------+
          +--+--+--+-----+
          |  1  2  3     |
          | slave bridge |
          +--------------+
      
      When unplugging/replugging the laptop, the slave bridge (under test)
      gets the topology change flag sent by the root bridge, and fast ageing
      is triggered on the bridges. Once the topology change timer of the root
      bridge expires, the topology change flag is cleared and the configured
      ageing time is restored on the bridges.
      
      A similar test has been done between two bridges under test.
      When changing the forward delay of the root bridge with:
      
          # echo 3000 > /sys/class/net/br0/bridge/forward_delay
      
      the ageing time correctly changes on both bridges from 300s to 60s while
      the TOPOLOGY_CHANGE flag is present.
      
      [1] "8.3.5 Notifying topology changes",
          http://profesores.elo.utfsm.cl/~agv/elo309/doc/802.1D-1998.pdf
      
      No change since RFC: https://lkml.org/lkml/2016/10/19/828
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c280b482
    • Vivien Didelot's avatar
      net: bridge: shorten ageing time on topology change · 34d8acd8
      Vivien Didelot authored
      802.1D [1] specifies that the bridges must use a short value to age out
      dynamic entries in the Filtering Database for a period, once a topology
      change has been communicated by the root bridge.
      
      Add a bridge_ageing_time member in the net_bridge structure to store the
      bridge ageing time value configured by the user (ioctl/netlink/sysfs).
      
      If we are using in-kernel STP, shorten the ageing time value to twice
      the forward delay used by the topology when the topology change flag is
      set. When the flag is cleared, restore the configured ageing time.
      
      [1] "8.3.5 Notifying topology changes ",
          http://profesores.elo.utfsm.cl/~agv/elo309/doc/802.1D-1998.pdfSigned-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      34d8acd8
    • Vivien Didelot's avatar
      net: bridge: add helper to set topology change · 8384b5f5
      Vivien Didelot authored
      Add a __br_set_topology_change helper to set the topology change value.
      
      This can be later extended to add actions when the topology change flag
      is set or cleared.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8384b5f5
    • Vivien Didelot's avatar
      net: bridge: add helper to offload ageing time · 82dd4332
      Vivien Didelot authored
      The SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME switchdev attr is actually set
      when initializing a bridge port, and when configuring the bridge ageing
      time from ioctl/netlink/sysfs.
      
      Add a __set_ageing_time helper to offload the ageing time to physical
      switches, and add the SWITCHDEV_F_DEFER flag since it can be called
      under bridge lock.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      82dd4332
  2. 10 Dec, 2016 25 commits
  3. 09 Dec, 2016 9 commits
    • Linus Torvalds's avatar
      Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · 810ac7b7
      Linus Torvalds authored
      Pull libnvdimm fixes from Dan Williams:
       "Several fixes to the DSM (ACPI device specific method) marshaling
        implementation.
      
        I consider these urgent enough to send for 4.9 consideration since
        they fix the kernel's handling of ARS (Address Range Scrub) commands.
        Especially for platforms without machine-check-recovery capabilities,
        successful execution of ARS commands enables the platform to
        potentially break out of an infinite reboot problem if a media error
        is present in the boot path. There is also a one line fix for a
        device-dax read-only mapping regression.
      
        Commits 9a901f54 ("acpi, nfit: fix extended status translations
        for ACPI DSMs") and 325896ff ("device-dax: fix private mapping
        restriction, permit read-only") are true regression fixes for changes
        introduced this cycle.
      
        Commit efda1b5d ("acpi, nfit, libnvdimm: fix / harden ars_status
        output length handling") fixes the kernel's handling of zero-length
        results, this never would have worked in the past, but we only just
        recently discovered a BIOS implementation that emits this arguably
        spec non-compliant result.
      
        The remaining two commits are additional fall out from thinking
        through the implications of a zero / truncated length result of the
        ARS Status command.
      
        In order to mitigate the risk that these changes introduce yet more
        regressions they are backstopped by a new unit test in commit
        a7de92da ("tools/testing/nvdimm: unit test acpi_nfit_ctl()") that
        mocks up inputs to acpi_nfit_ctl()"
      
      * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        device-dax: fix private mapping restriction, permit read-only
        tools/testing/nvdimm: unit test acpi_nfit_ctl()
        acpi, nfit: fix bus vs dimm confusion in xlat_status
        acpi, nfit: validate ars_status output buffer size
        acpi, nfit, libnvdimm: fix / harden ars_status output length handling
        acpi, nfit: fix extended status translations for ACPI DSMs
      810ac7b7
    • Linus Torvalds's avatar
      Merge branch 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · 861d75d0
      Linus Torvalds authored
      Pull libata fixes from Tejun Heo:
       "This is quite late but SCT Write Same support added during this cycle
        is broken subtly but seriously and it'd be best to disable it before
        v4.9 gets released.
      
        This contains two commits - one low impact sata_mv fix and the
        mentioned disabling of SCT Write Same"
      
      * 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        libata-scsi: disable SCT Write Same for the moment
        ata: sata_mv: check for errors when parsing nr-ports from dt
      861d75d0
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client · af9468db
      Linus Torvalds authored
      Pull ceph fix from Ilya Dryomov:
       "A fix for an issue with ->d_revalidate() in ceph, causing frequent
        kernel crashes.
      
        Marked for stable - it goes back to 4.6, but started popping up only
        in 4.8"
      
      * tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client:
        ceph: don't set req->r_locked_dir in ceph_d_revalidate
      af9468db
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 1f6c926c
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "Final batch of SoC fixes
      
        A few fixes that have trickled in over the last week, all fixing minor
        errors in devicetrees -- UART pin assignment on Allwinner H3,
        correcting number of SATA ports on a Marvell-based Linkstation
        platform and a display clock fix for Freescale/NXP i.MX7D that fixes a
        freeze when starting up X"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: dts: orion5x: fix number of sata port for linkstation ls-gl
        ARM: dts: imx7d: fix LCDIF clock assignment
        dts: sun8i-h3: correct UART3 pin definitions
      1f6c926c
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v4.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 75147120
      Linus Torvalds authored
      Pull m68k fixes from Geert Uytterhoeven:
      
       - build fix for drivers calling ndelay() in a conditional block without
         curly braces
      
       - defconfig updates
      
      * tag 'm68k-for-v4.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Fix ndelay() macro
        m68k/defconfig: Update defconfigs for v4.9-rc1
      75147120
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 1ca17e97
      Linus Torvalds authored
      Pull drm fix from Dave Airlie:
       "Just a single fix for amdgpu to just suspend the gpu on 'shutdown'
        instead of shutting it down fully, as for some reason the hw was
        getting upset in some situations"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/amdgpu: just suspend the hw on pci shutdown
      1ca17e97
    • Linus Torvalds's avatar
      Revert "radix tree test suite: fix compilation" · 2b41226b
      Linus Torvalds authored
      This reverts commit 53855d10.
      
      It shouldn't have come in yet - it depends on the changes in linux-next
      that will come in during the next merge window.  As Matthew Wilcox says,
      the test suite is broken with the current state without the revert.
      Requested-by: default avatarMatthew Wilcox <mawilcox@microsoft.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2b41226b
    • Johannes Berg's avatar
      cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts · e6f462df
      Johannes Berg authored
      When mac80211 abandons an association attempt, it may free
      all the data structures, but inform cfg80211 and userspace
      about it only by sending the deauth frame it received, in
      which case cfg80211 has no link to the BSS struct that was
      used and will not cfg80211_unhold_bss() it.
      
      Fix this by providing a way to inform cfg80211 of this with
      the BSS entry passed, so that it can clean up properly, and
      use this ability in the appropriate places in mac80211.
      
      This isn't ideal: some code is more or less duplicated and
      tracing is missing. However, it's a fairly small change and
      it's thus easier to backport - cleanups can come later.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      e6f462df
    • Vamsi Krishna's avatar
      nl80211: Use different attrs for BSSID and random MAC addr in scan req · 2fa436b3
      Vamsi Krishna authored
      NL80211_ATTR_MAC was used to set both the specific BSSID to be scanned
      and the random MAC address to be used when privacy is enabled. When both
      the features are enabled, both the BSSID and the local MAC address were
      getting same value causing Probe Request frames to go with unintended
      DA. Hence, this has been fixed by using a different NL80211_ATTR_BSSID
      attribute to set the specific BSSID (which was the more recent addition
      in cfg80211) for a scan.
      
      Backwards compatibility with old userspace software is maintained to
      some extent by allowing NL80211_ATTR_MAC to be used to set the specific
      BSSID when scanning without enabling random MAC address use.
      
      Scanning with random source MAC address was introduced by commit
      ad2b26ab ("cfg80211: allow drivers to support random MAC addresses
      for scan") and the issue was introduced with the addition of the second
      user for the same attribute in commit 818965d3 ("cfg80211: Allow a
      scan request for a specific BSSID").
      
      Fixes: 818965d3 ("cfg80211: Allow a scan request for a specific BSSID")
      Signed-off-by: default avatarVamsi Krishna <vamsin@qti.qualcomm.com>
      Signed-off-by: default avatarJouni Malinen <jouni@qca.qualcomm.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      2fa436b3