11 Dec, 2016

3 commits

  • David S. Miller
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes the following issues:

    - Fix pointer size when caam is used with AArch64 boot loader on
    AArch32 kernel.

    - Fix ahash state corruption in marvell driver.

    - Fix buggy algif_aed tag handling.

    - Prevent mcryptd from being used with incompatible algorithms which
    can cause crashes"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: algif_aead - fix uninitialized variable warning
    crypto: mcryptd - Check mcryptd algorithm compatibility
    crypto: algif_aead - fix AEAD tag memory handling
    crypto: caam - fix pointer size for AArch64 boot loader, AArch32 kernel
    crypto: marvell - Don't corrupt state of an STD req for re-stepped ahash
    crypto: marvell - Don't copy hash operation twice into the SRAM

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Limit the number of can filters to avoid > MAX_ORDER allocations.
    Fix from Marc Kleine-Budde.

    2) Limit GSO max size in netvsc driver to avoid problems with NVGRE
    configurations. From Stephen Hemminger.

    3) Return proper error when memory allocation fails in
    ser_gigaset_init(), from Dan Carpenter.

    4) Missing linkage undo in error paths of ipvlan_link_new(), from Gao
    Feng.

    5) Missing necessayr SET_NETDEV_DEV in lantiq and cpmac drivers, from
    Florian Fainelli.

    6) Handle probe deferral properly in smsc911x driver.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net: mlx5: Fix Kconfig help text
    net: smsc911x: back out silently on probe deferrals
    ibmveth: set correct gso_size and gso_type
    net: ethernet: cpmac: Call SET_NETDEV_DEV()
    net: ethernet: lantiq_etop: Call SET_NETDEV_DEV()
    vhost-vsock: fix orphan connection reset
    cxgb4/cxgb4vf: Assign netdev->dev_port with port ID
    driver: ipvlan: Unlink the upper dev when ipvlan_link_new failed
    ser_gigaset: return -ENOMEM on error instead of success
    NET: usb: cdc_mbim: add quirk for supporting Telit LE922A
    can: peak: fix bad memory access and free sequence
    phy: Don't increment MDIO bus refcount unless it's a different owner
    netvsc: reduce maximum GSO size
    drivers: net: cpsw-phy-sel: Clear RGMII_IDMODE on "rgmii" links
    can: raw: raw_setsockopt: limit number of can_filter that can be set

    Linus Torvalds
     

10 Dec, 2016

20 commits

  • Since the following commit, Infiniband and Ethernet have not been
    mutually exclusive.

    Fixes: 4aa17b28 mlx5: Enable mutual support for IB and Ethernet
    Signed-off-by: Christopher Covington
    Signed-off-by: David S. Miller

    Christopher Covington
     
  • It seems attackers can also send UDP packets with no payload at all.

    skb_condense() can still be a win in this case.

    It will be possible to replace the custom code in tcp_add_backlog()
    to get full benefit from skb_condense()

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

    Eric Dumazet
     
  • When trying to get a regulator we may get deferred and we see
    this noise:

    smsc911x 1b800000.ethernet-ebi2 (unnamed net_device) (uninitialized):
    couldn't get regulators -517

    Then the driver continues anyway. Which means that the regulator
    may not be properly retrieved and reference counted, and may be
    switched off in case noone else is using it.

    Fix this by returning silently on deferred probe and let the
    system work it out.

    Cc: Jeremy Linton
    Signed-off-by: Linus Walleij
    Signed-off-by: David S. Miller

    Linus Walleij
     
  • …inux/kernel/git/jberg/mac80211-next

    Johannes Berg says:

    ====================
    Three fixes:
    * fix a logic bug introduced by a previous cleanup
    * fix nl80211 attribute confusing (trying to use
    a single attribute for two purposes)
    * fix a long-standing BSS leak that happens when an
    association attempt is abandoned
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • This patch is based on an earlier one submitted
    by Jon Maxwell with the following commit message:

    "We recently encountered a bug where a few customers using ibmveth on the
    same LPAR hit an issue where a TCP session hung when large receive was
    enabled. Closer analysis revealed that the session was stuck because the
    one side was advertising a zero window repeatedly.

    We narrowed this down to the fact the ibmveth driver did not set gso_size
    which is translated by TCP into the MSS later up the stack. The MSS is
    used to calculate the TCP window size and as that was abnormally large,
    it was calculating a zero window, even although the sockets receive buffer
    was completely empty."

    We rely on the Virtual I/O Server partition in a pseries
    environment to provide the MSS through the TCP header checksum
    field. The stipulation is that users should not disable checksum
    offloading if rx packet aggregation is enabled through VIOS.

    Some firmware offerings provide the MSS in the RX buffer.
    This is signalled by a bit in the RX queue descriptor.

    Reviewed-by: Brian King
    Reviewed-by: Pradeep Satyanarayana
    Reviewed-by: Marcelo Ricardo Leitner
    Reviewed-by: Jonathan Maxwell
    Reviewed-by: David Dai
    Signed-off-by: Thomas Falcon
    Signed-off-by: David S. Miller

    Thomas Falcon
     
  • Eric Dumazet says:

    ====================
    udp: receive path optimizations

    This patch series provides about 100 % performance increase under flood.

    v2: added Paolo feedback on udp_rmem_release() for tiny sk_rcvbuf
    added the last patch touching sk_rmem_alloc later
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • In flood situations, keeping sk_rmem_alloc at a high value
    prevents producers from touching the socket.

    It makes sense to lower sk_rmem_alloc only at the end
    of udp_rmem_release() after the thread draining receive
    queue in udp_recvmsg() finished the writes to sk_forward_alloc.

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

    Eric Dumazet
     
  • If udp_recvmsg() constantly releases sk_rmem_alloc
    for every read packet, it gives opportunity for
    producers to immediately grab spinlocks and desperatly
    try adding another packet, causing false sharing.

    We can add a simple heuristic to give the signal
    by batches of ~25 % of the queue capacity.

    This patch considerably increases performance under
    flood by about 50 %, since the thread draining the queue
    is no longer slowed by false sharing.

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

    Eric Dumazet
     
  • In UDP RX handler, we currently clear skb->dev before skb
    is added to receive queue, because device pointer is no longer
    available once we exit from RCU section.

    Since this first cache line is always hot, lets reuse this space
    to store skb->truesize and thus avoid a cache line miss at
    udp_recvmsg()/udp_skb_destructor time while receive queue
    spinlock is held.

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

    Eric Dumazet
     
  • Idea of busylocks is to let producers grab an extra spinlock
    to relieve pressure on the receive_queue spinlock shared by consumer.

    This behavior is requested only once socket receive queue is above
    half occupancy.

    Under flood, this means that only one producer can be in line
    trying to acquire the receive_queue spinlock.

    These busylock can be allocated on a per cpu manner, instead of a
    per socket one (that would consume a cache line per socket)

    This patch considerably improves UDP behavior under stress,
    depending on number of NIC RX queues and/or RPS spread.

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

    Eric Dumazet
     
  • Timur Tabi says:

    ====================
    net: qcom/emac: simplify support for different SOCs

    On SOCs that have the Qualcomm EMAC network controller, the internal
    PHY block is always different. Sometimes the differences are small,
    sometimes it might be a completely different IP. Either way, using version
    numbers to differentiate them and putting all of the init code in one
    file does not scale.

    This patchset does two things: The first breaks up the current code into
    different files, and the second patch adds support for a third SOC, the
    Qualcomm Technologies QDF2400 ARM Server SOC.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The QDF2432 and the QDF2400 have slightly different internal PHYs,
    so there are some programming differences. Some of the registers in
    the QDF2400 have moved, and some registers require different values
    during initialization.

    Because of the differences, and because HIDs are a scare resource,
    the ACPI tables specify the hardware version in an _HRV property.
    Version 1 is the QDF2432, and version 2 is the QDF2400. Any future
    SOC that has the same internal PHY but different programming
    requirements will be assigned the next available version number.

    Signed-off-by: Timur Tabi
    Signed-off-by: David S. Miller

    Timur Tabi
     
  • The internal PHY of the EMAC differs on each SOC, and the list will
    only continue to grow. By separating the code into individual files,
    we can add support for more SOCs more cleanly.

    Note: The internal PHY is also sometimes called the SGMII device.

    We also stop referring to the various PHY variations by version number,
    so no more "v2", "v3", etc. Instead, the devices are named after the
    SOC they are, which is in sync with the device tree property names.

    Future patches will probably rearrange more code among the files.

    Signed-off-by: Timur Tabi
    Signed-off-by: David S. Miller

    Timur Tabi
     
  • 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 9a901f5495e2 ("acpi, nfit: fix extended status translations
    for ACPI DSMs") and 325896ffdf90 ("device-dax: fix private mapping
    restriction, permit read-only") are true regression fixes for changes
    introduced this cycle.

    Commit efda1b5d87cb ("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
    a7de92dac9f0 ("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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • This reverts commit 53855d10f4567a0577360b6448d52a863929775b.

    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: Matthew Wilcox
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

09 Dec, 2016

17 commits

  • 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: Johannes Berg

    Johannes Berg
     
  • 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
    ad2b26abc157 ("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 818965d39177 ("cfg80211: Allow a
    scan request for a specific BSSID").

    Fixes: 818965d39177 ("cfg80211: Allow a scan request for a specific BSSID")
    Signed-off-by: Vamsi Krishna
    Signed-off-by: Jouni Malinen
    Signed-off-by: Johannes Berg

    Vamsi Krishna
     
  • Arend inadvertently inverted the logic while converting to
    wdev_running(), fix that.

    Fixes: 73c7da3dae1e ("cfg80211: add generic helper to check interface is running")
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • In some configurations, gcc cannot trace the state of variables
    across a spin_unlock() barrier, leading to a warning about
    correct code:

    xgene_enet_main.c: In function 'xgene_enet_start_xmit':
    ../../../phy/mdio-xgene.h:112:14: error: 'mss_index' may be used uninitialized in this function [-Werror=maybe-uninitialized]

    Here we can trivially move the assignment before that spin_unlock,
    which reliably avoids the warning.

    Fixes: e3978673f514 ("drivers: net: xgene: Fix MSS programming")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • The array for initializing the cle is set up on the stack with
    almost entirely constant data and then passed to a function that
    converts it into HW specific bit patterns. With the latest
    addition, the size of this array has grown to the point that
    we get a warning about potential stack overflow in allmodconfig
    builds:

    xgene_enet_cle.c: In function ‘xgene_enet_cle_init’:
    xgene_enet_cle.c:836:1: error: the frame size of 1032 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]

    Looking a bit deeper at the usage, I noticed that the only modification
    of the data is in dead code, as we don't even use the cle module
    for phy_mode other than PHY_INTERFACE_MODE_XGMII. This means we
    can simply mark the structure constant and access it directly rather
    than passing the pointer down through another structure, making
    the code more efficient at the same time as avoiding the
    warning.

    Fixes: a809701fed15 ("drivers: net: xgene: fix: RSS for non-TCP/UDP")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • On 32-bit ARM with 64-bit dma_addr_t I get this warning about an
    incorrect format string:

    In file included from /git/arm-soc/drivers/net/ethernet/mellanox/mlx5/core/alloc.c:42:0:
    drivers/net/ethernet/mellanox/mlx5/core/alloc.c: In function ‘mlx5_frag_buf_alloc_node’:
    drivers/net/ethernet/mellanox/mlx5/core/alloc.c:134:12: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]

    We have the special %pad format for printing dma_addr_t, so use that
    to print the correct address and avoid the warning.

    Fixes: 1c1b522808a1 ("net/mlx5e: Implement Fragmented Work Queue (WQ)")
    Signed-off-by: Arnd Bergmann
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • Florian Fainelli says:

    ====================
    net: ethernet: Make sure we set dev->dev.parent

    This patch series builds atop:

    ec988ad78ed6d184a7f4ca6b8e962b0e8f1de461 ("phy: Don't increment MDIO
    bus refcount unless it's a different owner")

    FMAN is the one that potentially needs patching as well (call
    SET_NETDEV_DEV), but there appears to be no way that init_phy is
    called right now, or there is not such an in-tree user. Madalin, can
    you comment on that?
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The TI CPMAC driver calls into PHYLIB which now checks for
    net_device->dev.parent, so make sure we do set it before calling into
    any MDIO/PHYLIB related function.

    Fixes: ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's a different owner")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The Lantiq Etop driver calls into PHYLIB which now checks for
    net_device->dev.parent, so make sure we do set it before calling into
    any MDIO/PHYLIB related function.

    Fixes: ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's a different owner")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • local_addr.svm_cid is host cid. We should check guest cid instead,
    which is remote_addr.svm_cid. Otherwise we end up resetting all
    connections to all guests.

    Cc: stable@vger.kernel.org [4.8+]
    Reviewed-by: Stefan Hajnoczi
    Signed-off-by: Peng Tao
    Signed-off-by: David S. Miller

    Peng Tao
     
  • Pull parisc fixes from Helge Deller:
    "Three important fixes for the parisc architecture.

    Dave provided two patches: One which purges the TLB before setting a
    PTE entry and a second one which drops unnecessary TLB flushes. Both
    patches have been tested for one week on the debian buildd servers and
    prevent random segmentation faults.

    The patch from me fixes a crash at boot inside the TLB measuring code
    on SMP machines with PA8000-PA8700 CPUs (specifically A500-44 and
    J5000 servers)"

    * 'parisc-4.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Fix TLB related boot crash on SMP machines
    parisc: Remove unnecessary TLB purges from flush_dcache_page_asm and flush_icache_page_asm
    parisc: Purge TLB before setting PTE

    Linus Torvalds
     
  • …ux/kernel/git/mkl/linux-can

    Marc Kleine-Budde says:

    ====================
    pull-request: can 2016-12-08

    this is a pull request for one patch.

    Jiho Chu found and fixed a use-after-free error in the cleanup path in
    the peak pcan USB CAN driver.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • This patch cleanup checkpatch.pl warning
    WARNING: __aligned(size) is preferred over __attribute__((aligned(size)))

    Signed-off-by: Amit Kushwaha
    Signed-off-by: David S. Miller

    Amit Kushwaha
     
  • Added missing dev_port assignment in cxgb4vf driver.
    Also made dev_port assignment of cxgb4 in sync with cxgb4vf driver.

    Signed-off-by: Casey Leedom
    Signed-off-by: Arjun V
    Signed-off-by: Hariprasad Shenai
    Signed-off-by: Ganesh Goudar
    Signed-off-by: David S. Miller

    Arjun V
     
  • Raghu Vatsavayi says:

    ====================
    liquidio VF offloads and stats

    Following is final patch series in completing the liquidio
    VF driver support. These patches have minor changes related
    to offloads and stats.

    Please apply patches in following order as some of them
    depend on earlier patches.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Adds support for VF error handling.

    Signed-off-by: Raghu Vatsavayi
    Signed-off-by: Derek Chickles
    Signed-off-by: Satanand Burla
    Signed-off-by: Felix Manlunas
    Signed-off-by: David S. Miller

    Raghu Vatsavayi
     
  • Adds support for VF timestamp.

    Signed-off-by: Raghu Vatsavayi
    Signed-off-by: Derek Chickles
    Signed-off-by: Satanand Burla
    Signed-off-by: Felix Manlunas
    Signed-off-by: David S. Miller

    Raghu Vatsavayi