30 Jun, 2017

4 commits

  • My static checker complains that ofdpa_neigh_del() can sometimes free
    "found". It just makes sense to use it first before deleting it.

    Fixes: ecf244f753e0 ("rocker: fix maybe-uninitialized warning")
    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • In case a VLAN device is enslaved to a bridge we shouldn't create a
    router interface (RIF) for it when it's configured with an IP address.
    This is already handled by the driver for other types of netdevs, such
    as physical ports and LAG devices.

    If this IP address is then removed and the interface is subsequently
    unlinked from the bridge, a NULL pointer dereference can happen, as the
    original 802.1d FID was replaced with an rFID which was then deleted.

    To reproduce:
    $ ip link set dev enp3s0np9 up
    $ ip link add name enp3s0np9.111 link enp3s0np9 type vlan id 111
    $ ip link set dev enp3s0np9.111 up
    $ ip link add name br0 type bridge
    $ ip link set dev br0 up
    $ ip link set enp3s0np9.111 master br0
    $ ip address add dev enp3s0np9.111 192.168.0.1/24
    $ ip address del dev enp3s0np9.111 192.168.0.1/24
    $ ip link set dev enp3s0np9.111 nomaster

    Fixes: 99724c18fc66 ("mlxsw: spectrum: Introduce support for router interfaces")
    Signed-off-by: Ido Schimmel
    Reported-by: Petr Machata
    Tested-by: Petr Machata
    Reviewed-by: Petr Machata
    Signed-off-by: David S. Miller

    Ido Schimmel
     
  • When qdisc fail to init, qdisc_create would invoke the destroy callback
    to cleanup. But there is no check if the callback exists really. So it
    would cause the panic if there is no real destroy callback like the qdisc
    codel, fq, and so on.

    Take codel as an example following:
    When a malicious user constructs one invalid netlink msg, it would cause
    codel_init->codel_change->nla_parse_nested failed.
    Then kernel would invoke the destroy callback directly but qdisc codel
    doesn't define one. It causes one panic as a result.

    Now add one the check for destroy to avoid the possible panic.

    Fixes: 87b60cfacf9f ("net_sched: fix error recovery at qdisc creation")
    Signed-off-by: Gao Feng
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Gao Feng
     
  • We don't hold any tx lock when trying to disable TX during reset, this
    would lead a use after free since ndo_start_xmit() tries to access
    the virtqueue which has already been freed. Fix this by using
    netif_tx_disable() before freeing the vqs, this could make sure no tx
    after vq freeing.

    Reported-by: Jean-Philippe Menil
    Tested-by: Jean-Philippe Menil
    Fixes commit f600b6905015 ("virtio_net: Add XDP support")
    Cc: John Fastabend
    Signed-off-by: Jason Wang
    Acked-by: Michael S. Tsirkin
    Acked-by: Robert McCabe
    Signed-off-by: David S. Miller

    Jason Wang
     

28 Jun, 2017

3 commits

  • The Belkin B2B128 is a USB 3.0 Hub + Gigabit Ethernet Adapter, the
    Ethernet adapter uses the ASIX AX88179 USB 3.0 to Gigabit Ethernet
    chip supported by this driver, add the USB ID for the same.

    This patch is based on work by Geoffrey Tran
    who has indicated they would like this upstreamed by someone more
    familiar with the upstreaming process.

    Signed-off-by: Andrew F. Davis
    Signed-off-by: David S. Miller

    Andrew F. Davis
     
  • A previous commit (5567e989198b5a8d) inserted a dependency on DMA
    API that requires HAS_DMA to be added in Kconfig.

    Signed-off-by: Madalin Bucur
    Signed-off-by: David S. Miller

    Madalin Bucur
     
  • Similar to the fix provided by Dominik Heidler in commit
    9b3dc0a17d73 ("l2tp: cast l2tp traffic counter to unsigned")
    we need to take care of 32bit kernels in dev_get_stats().

    When using atomic_long_read(), we add a 'long' to u64 and
    might misinterpret high order bit, unless we cast to unsigned.

    Fixes: caf586e5f23ce ("net: add a core netdev->rx_dropped counter")
    Fixes: 015f0688f57ca ("net: net: add a core netdev->tx_dropped counter")
    Fixes: 6e7333d315a76 ("net: add rx_nohandler stat counter")
    Signed-off-by: Eric Dumazet
    Cc: Jarod Wilson
    Signed-off-by: David S. Miller

    Eric Dumazet
     

26 Jun, 2017

1 commit

  • We have to reset the sk->sk_rx_dst when we disconnect a TCP
    connection, because otherwise when we re-connect it this
    dst reference is simply overridden in tcp_finish_connect().

    This fixes a dst leak which leads to a loopback dev refcnt
    leak. It is a long-standing bug, Kevin reported a very similar
    (if not same) bug before. Thanks to Andrei for providing such
    a reliable reproducer which greatly narrows down the problem.

    Fixes: 41063e9dd119 ("ipv4: Early TCP socket demux.")
    Reported-by: Andrei Vagin
    Reported-by: Kevin Xu
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    WANG Cong
     

25 Jun, 2017

2 commits

  • In __ip6_datagram_connect(), reset sk->sk_v6_daddr and inet->dport if
    error occurs.
    In udp_v6_early_demux(), check for sk_state to make sure it is in
    TCP_ESTABLISHED state.
    Together, it makes sure unconnected UDP socket won't be considered as a
    valid candidate for early demux.

    v3: add TCP_ESTABLISHED state check in udp_v6_early_demux()
    v2: fix compilation error

    Fixes: 5425077d73e0 ("net: ipv6: Add early demux handler for UDP unicast")
    Signed-off-by: Wei Wang
    Acked-by: Maciej Żenczykowski
    Signed-off-by: David S. Miller

    Wei Wang
     
  • When mc configuration changes bnx2x_config_mcast() can return 0 for
    success, negative for failure and positive for benign reason preventing
    its immediate work, e.g., when the command awaits the completion of
    a previously sent command.

    When removing all configured macs on a 578xx adapter, if a positive
    value would be returned driver would errneously log it as an error.

    Fixes: c7b7b483ccc9 ("bnx2x: Don't flush multicast MACs")
    Signed-off-by: Yuval Mintz
    Signed-off-by: David S. Miller

    Mintz, Yuval
     

24 Jun, 2017

7 commits

  • Michael Chan says:

    ====================
    bnxt_en: Error handling and netpoll fixes.

    Add missing error handling and fix netpoll handling. The current code
    handles RX and TX events in netpoll mode and is causing lots of warnings
    and errors in the RX code path in netpoll mode. The fix is to only handle
    TX events in netpoll mode.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • To handle netpoll properly, the driver must only handle TX packets
    during NAPI. Handling RX events cause warnings and errors in
    netpoll mode. The ndo_poll_controller() method should call
    napi_schedule() directly so that a NAPI weight of zero will be used
    during netpoll mode.

    The bnxt_en driver supports 2 ring modes: combined, and separate rx/tx.
    In separate rx/tx mode, the ndo_poll_controller() method will only
    process the tx rings. In combined mode, the rx and tx completion
    entries are mixed in the completion ring and we need to drop the rx
    entries and recycle the rx buffers.

    Add a function bnxt_force_rx_discard() to handle this in netpoll mode
    when we see rx entries in combined ring mode.

    Reported-by: Calvin Owens
    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     
  • When we get a TPA_END completion to handle a completed LRO packet, it
    is possible that hardware would indicate errors. The current code is
    not checking for the error condition. Define the proper error bits and
    the macro to check for this error and abort properly.

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     
  • The function, skb_complete_tx_timestamp(), used to allow passing in a
    NULL pointer for the time stamps, but that was changed in commit
    62bccb8cdb69051b95a55ab0c489e3cab261c8ef ("net-timestamp: Make the
    clone operation stand-alone from phy timestamping"), and the existing
    call sites, all of which are in the dp83640 driver, were fixed up.

    Even though the kernel-doc was subsequently updated in commit
    7a76a021cd5a292be875fbc616daf03eab1e6996 ("net-timestamp: Update
    skb_complete_tx_timestamp comment"), still a bug fix from Manfred
    Rudigier came into the driver using the old semantics. Probably
    Manfred derived that patch from an older kernel version.

    This fix should be applied to the stable trees as well.

    Fixes: 81e8f2e930fe ("net: dp83640: Fix tx timestamp overflow handling.")
    Signed-off-by: Richard Cochran
    Signed-off-by: David S. Miller

    Richard Cochran
     
  • Steffen Klassert says:

    ====================
    pull request (net): ipsec 2017-06-23

    1) Fix xfrm garbage collecting when unregistering a netdevice.
    From Hangbin Liu.

    2) Fix NULL pointer derefernce when exiting a network namespace.
    From Hangbin Liu.

    3) Fix some error codes in pfkey to prevent a NULL pointer derefernce.
    From Dan Carpenter.

    4) Fix NULL pointer derefernce on allocation failure in pfkey.
    From Dan Carpenter.

    5) Adjust IPv6 payload_len to include extension headers. Otherwise
    we corrupt the packets when doing ESP GRO on transport mode.
    From Yossi Kuperman.

    6) Set nhoff to the proper offset of the IPv6 nexthdr when doing ESP GRO.
    From Yossi Kuperman.

    Please pull or let me know if there are problems.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The memory allocation size is controlled by user-space,
    if it is too large just fail silently and return NULL,
    not to mention there is a fallback allocation later.

    Reported-by: Andrey Konovalov
    Signed-off-by: Cong Wang
    Tested-by: Andrey Konovalov
    Signed-off-by: David S. Miller

    WANG Cong
     
  • Our customer encountered stuck NFS writes for blocks starting at specific
    offsets w.r.t. page boundary caused by networking stack sending packets via
    UFO enabled device with wrong checksum. The problem can be reproduced by
    composing a long UDP datagram from multiple parts using MSG_MORE flag:

    sendto(sd, buff, 1000, MSG_MORE, ...);
    sendto(sd, buff, 1000, MSG_MORE, ...);
    sendto(sd, buff, 3000, 0, ...);

    Assume this packet is to be routed via a device with MTU 1500 and
    NETIF_F_UFO enabled. When second sendto() gets into __ip_append_data(),
    this condition is tested (among others) to decide whether to call
    ip_ufo_append_data():

    ((length + fragheaderlen) > mtu) || (skb && skb_is_gso(skb))

    At the moment, we already have skb with 1028 bytes of data which is not
    marked for GSO so that the test is false (fragheaderlen is usually 20).
    Thus we append second 1000 bytes to this skb without invoking UFO. Third
    sendto(), however, has sufficient length to trigger the UFO path so that we
    end up with non-UFO skb followed by a UFO one. Later on, udp_send_skb()
    uses udp_csum() to calculate the checksum but that assumes all fragments
    have correct checksum in skb->csum which is not true for UFO fragments.

    When checking against MTU, we need to add skb->len to length of new segment
    if we already have a partially filled skb and fragheaderlen only if there
    isn't one.

    In the IPv6 case, skb can only be null if this is the first segment so that
    we have to use headersize (length of the first IPv6 header) rather than
    fragheaderlen (length of IPv6 header of further fragments) for skb == NULL.

    Fixes: e89e9cf539a2 ("[IPv4/IPv6]: UFO Scatter-gather approach")
    Fixes: e4c5e13aa45c ("ipv6: Should use consistent conditional judgement for
    ip6 fragment between __ip6_append_data and ip6_finish_output")
    Signed-off-by: Michal Kubecek
    Acked-by: Vlad Yasevich
    Signed-off-by: David S. Miller

    Michal Kubeček
     

23 Jun, 2017

3 commits

  • The 8000 series adapters uses catch-all filters for encapsulated traffic
    to support filtering VXLAN, NVGRE and GENEVE traffic.
    This new filter functionality requires a longer MCDI command.
    This patch increases the size of buffers on stack that were missed, which
    fixes a kernel panic from the stack protector.

    Fixes: 9b41080125176 ("sfc: insert catch-all filters for encapsulated traffic")
    Signed-off-by: Martin Habets
    Acked-by: Edward Cree
    Acked-by: Bert Kenward bkenward@solarflare.com
    Signed-off-by: David S. Miller

    Martin Habets
     
  • This structure member is hidden behind CONFIG_SYSFS, and we
    get a build error when that is disabled:

    drivers/net/hyperv/netvsc_drv.c: In function 'netvsc_set_channels':
    drivers/net/hyperv/netvsc_drv.c:754:49: error: 'struct net_device' has no member named 'num_rx_queues'; did you mean 'num_tx_queues'?
    drivers/net/hyperv/netvsc_drv.c: In function 'netvsc_set_rxfh':
    drivers/net/hyperv/netvsc_drv.c:1181:25: error: 'struct net_device' has no member named 'num_rx_queues'; did you mean 'num_tx_queues'?

    As the value is only set once to the argument of alloc_netdev_mq(),
    we can compare against that constant directly.

    Fixes: ff4a44199012 ("netvsc: allow get/set of RSS indirection table")
    Fixes: 2b01888d1b45 ("netvsc: allow more flexible setting of number of channels")
    Signed-off-by: Arnd Bergmann
    Reviewed-by: Haiyang Zhang
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Arnd Bergmann
     
  • The per netns loopback_dev->ip6_ptr is unregistered and set to
    NULL when its mtu is set to smaller than IPV6_MIN_MTU, this
    leads to that we could set rt->rt6i_idev NULL after a
    rt6_uncached_list_flush_dev() and then crash after another
    call.

    In this case we should just bring its inet6_dev down, rather
    than unregistering it, at least prior to commit 176c39af29bc
    ("netns: fix addrconf_ifdown kernel panic") we always
    override the case for loopback.

    Thanks a lot to Andrey for finding a reliable reproducer.

    Fixes: 176c39af29bc ("netns: fix addrconf_ifdown kernel panic")
    Reported-by: Andrey Konovalov
    Cc: Andrey Konovalov
    Cc: Daniel Lezcano
    Cc: David Ahern
    Signed-off-by: Cong Wang
    Acked-by: David Ahern
    Tested-by: Andrey Konovalov
    Signed-off-by: David S. Miller

    WANG Cong
     

22 Jun, 2017

19 commits

  • Vladislav Yasevich says:

    ====================
    macvlan: Fix some issues with changing mac addresses

    There are some issues in macvlan wrt to changing it's mac address.
    * An error is returned in the specified address is the same as an already
    assigned address.
    * In passthru mode, the mac address of the macvlan device doesn't change.
    * After changing the mac address of a passthru macvlan and then removing it,
    the mac address of the physical device remains changed.

    This patch series attempts to resolve these issues.

    V2: Address a small issue in p4 where we save the address from the lowerdev
    (from girish.moodalbail@oracle.com)
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Passthru macvlans directly change the mac address of the lower
    level device. That's OK, but after the macvlan is deleted,
    the lower device is left with changed address and one needs to
    reboot to bring back the origina HW addresses.

    This scenario is actually quite common with passthru macvtap devices.

    This patch attempts to solve this, by storing the mac address
    of the lower device in macvlan_port structure and keeping track of
    it through the changes.

    After this patch, any changes to the lower device mac address
    done trough the macvlan device, will be reverted back. Any
    changs done directly to the lower device mac address will be kept.

    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • Convert the port passthru boolean into flags with accesor functions.

    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • When a lower device of the passthru macvlan changes it's address,
    passthru macvlan is supposed to change it's own address as well.
    However, that doesn't happen correctly because the check in
    macvlan_addr_busy() will catch the fact that the lower level
    (port) mac address is the same as the address we are trying to
    assign to the macvlan, and return an error. As a reasult,
    the address of the passthru macvlan device is never changed.

    The same thing happens when the user attempts to change the
    mac address of the passthru macvlan.

    The simple solution appers to be to not check against
    the lower device in case of passthru macvlan device, since
    the 2 addresses are _supposed_ to be the same.

    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • The user currently gets an EBUSY error when attempting to set
    the mac address on a macvlan device to the same value.

    This should really be a no-op as nothing changes. Catch
    the condition and return early.

    Signed-off-by: Vladislav Yasevich
    Signed-off-by: David S. Miller

    Vlad Yasevich
     
  • Add a flag to indicate if a queue is rate-limited. Test the flag in
    NAPI poll handler and avoid rescheduling the queue if true, otherwise
    we risk locking up the host. The rescheduling will be done in the
    timer callback function.

    Reported-by: Jean-Louis Dupond
    Signed-off-by: Wei Liu
    Tested-by: Jean-Louis Dupond
    Reviewed-by: Paul Durrant
    Signed-off-by: David S. Miller

    Wei Liu
     
  • There are number of problems with configuration peer
    network device in absence of IFLA_VETH_PEER attributes
    where attributes for main network device shared with
    peer.

    First it is not feasible to configure both network
    devices with same MAC address since this makes
    communication in such configuration problematic.

    This case can be reproduced with following sequence:

    # ip link add address 02:11:22:33:44:55 type veth
    # ip li sh
    ...
    26: veth0@veth1: mtu 1500 qdisc \
    noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
    27: veth1@veth0: mtu 1500 qdisc \
    noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

    Second it is not possible to register both main and
    peer network devices with same name, that happens
    when name for main interface is given with IFLA_IFNAME
    and same attribute reused for peer.

    This case can be reproduced with following sequence:

    # ip link add dev veth1a type veth
    RTNETLINK answers: File exists

    To fix both of the cases check if corresponding netlink
    attributes are taken from peer_tb when valid or
    name based on rtnl ops kind and random address is used.

    Signed-off-by: Serhey Popovych
    Signed-off-by: David S. Miller

    Serhey Popovych
     
  • cpsw driver tries to get macid for am43xx SoCs using the compatible
    ti,am4372. But not all variants of am43x uses this complatible like
    epos evm uses ti,am438x. So use a generic compatible ti,am43 to get
    macid for all am43 based platforms.

    Reviewed-by: Dave Gerlach
    Signed-off-by: Lokesh Vutla
    Signed-off-by: David S. Miller

    Lokesh Vutla
     
  • In commit 242d3a49a2a1 ("ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf")
    I assumed NETDEV_REGISTER and NETDEV_UNREGISTER are paired,
    unfortunately, as reported by jeffy, netdev_wait_allrefs()
    could rebroadcast NETDEV_UNREGISTER event until all refs are
    gone.

    We have to add an additional check to avoid this corner case.
    For netdev_wait_allrefs() dev->reg_state is NETREG_UNREGISTERED,
    for dev_change_net_namespace(), dev->reg_state is
    NETREG_REGISTERED. So check for dev->reg_state != NETREG_UNREGISTERED.

    Fixes: 242d3a49a2a1 ("ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf")
    Reported-by: jeffy
    Cc: David Ahern
    Signed-off-by: Cong Wang
    Acked-by: David Ahern
    Signed-off-by: David S. Miller

    WANG Cong
     
  • The commit ("net/phy: micrel: Add workaround for bad autoneg") fixes an
    autoneg failure case by resetting the hardware. This turns off
    intterupts. Things will work themselves out if the phy polls, as it will
    figure out it's state during a poll. However if the phy uses only
    intterupts, the phy will stall, since interrupts are off. This patch
    fixes the issue by calling config_intr after resetting the phy.

    Fixes: d2fd719bcb0e ("net/phy: micrel: Add workaround for bad autoneg ")
    Signed-off-by: Zach Brown
    Reviewed-by: Andrew Lunn
    Reviewed-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Zach Brown
     
  • IP6CB(skb)->nhoff is the offset of the nexthdr field in an IPv6
    header, unless there are extension headers present, in which case
    nhoff points to the nexthdr field of the last extension header.

    In non-GRO code path, nhoff is set by ipv6_rcv before any XFRM code
    is executed. Conversely, in GRO code path (when esp6_offload is loaded),
    nhoff is not set. The following functions fail to read the correct value
    and eventually the packet is dropped:

    xfrm6_transport_finish
    xfrm6_tunnel_input
    xfrm6_rcv_tnl

    Set nhoff to the proper offset of nexthdr in esp6_gro_receive.

    Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
    Signed-off-by: Yossi Kuperman
    Signed-off-by: Steffen Klassert

    Yossi Kuperman
     
  • IPv6 payload length indicates the size of the payload, including any
    extension headers.

    In xfrm6_transport_finish, ipv6_hdr(skb)->payload_len is set to the
    payload size only, regardless of the presence of any extension headers.
    After ESP GRO transport mode decapsulation, ipv6_rcv trims the packet
    according to the wrong payload_len, thus corrupting the packet.

    Set payload_len to account for extension headers as well.

    Fixes: 7785bba299a8 ("esp: Add a software GRO codepath")
    Signed-off-by: Yossi Kuperman
    Signed-off-by: Steffen Klassert

    Yossi Kuperman
     
  • Pull networking fixes from David Miller:

    1) Fix refcounting wrt timers which hold onto inet6 address objects,
    from Xin Long.

    2) Fix an ancient bug in wireless wext ioctls, from Johannes Berg.

    3) Firmware handling fixes in brcm80211 driver, from Arend Van Spriel.

    4) Several mlx5 driver fixes (firmware readiness, timestamp cap
    reporting, devlink command validity checking, tc offloading, etc.)
    From Eli Cohen, Maor Dickman, Chris Mi, and Or Gerlitz.

    5) Fix dst leak in IP/IP6 tunnels, from Haishuang Yan.

    6) Fix dst refcount bug in decnet, from Wei Wang.

    7) Netdev can be double freed in register_vlan_device(). Fix from Gao
    Feng.

    8) Don't allow object to be destroyed while it is being dumped in SCTP,
    from Xin Long.

    9) Fix dpaa_eth build when modular, from Madalin Bucur.

    10) Fix throw route leaks, from Serhey Popovych.

    11) IFLA_GROUP missing from if_nlmsg_size() and ifla_policy[] table,
    also from Serhey Popovych.

    12) Fix premature TX SKB free in stmmac, from Niklas Cassel.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (36 commits)
    igmp: add a missing spin_lock_init()
    net: stmmac: free an skb first when there are no longer any descriptors using it
    sfc: remove duplicate up_write on VF filter_sem
    rtnetlink: add IFLA_GROUP to ifla_policy
    ipv6: Do not leak throw route references
    dt-bindings: net: sms911x: Add missing optional VDD regulators
    dpaa_eth: reuse the dma_ops provided by the FMan MAC device
    fsl/fman: propagate dma_ops
    net/core: remove explicit do_softirq() from busy_poll_stop()
    fib_rules: Resolve goto rules target on delete
    sctp: ensure ep is not destroyed before doing the dump
    net/hns:bugfix of ethtool -t phy self_test
    net: 8021q: Fix one possible panic caused by BUG_ON in free_netdev
    cxgb4: notify uP to route ctrlq compl to rdma rspq
    ip6_tunnel: Correct tos value in collect_md mode
    decnet: always not take dst->__refcnt when inserting dst into hash table
    ip6_tunnel: fix potential issue in __ip6_tnl_rcv
    ip_tunnel: fix potential issue in ip_tunnel_rcv
    brcmfmac: fix uninitialized warning in brcmf_usb_probe_phase2()
    net/mlx5e: Avoid doing a cleanup call if the profile doesn't have it
    ...

    Linus Torvalds
     
  • Pull more pin control fixes from Linus Walleij:
    "Some late arriving fixes. I should have sent earlier, just swamped
    with work as usual. Thomas patch makes AMD systems usable despite
    firmware bugs so it is fairly important.

    - Make the AMD driver use a regular interrupt rather than a chained
    one, so the system does not lock up.

    - Fix a function call error deep inside the STM32 driver"

    * tag 'pinctrl-v4.12-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
    pinctrl: stm32: Fix bad function call
    pinctrl/amd: Use regular interrupt instead of chained

    Linus Torvalds
     
  • Pull HID fixes from Jiri Kosina:

    - revert of a commit to magicmouse driver that regressess certain
    devices, from Daniel Stone

    - quirk for a specific Dell mouse, from Sebastian Parschauer

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    Revert "HID: magicmouse: Set multi-touch keybits for Magic Mouse"
    HID: Add quirk for Dell PIXART OEM mouse

    Linus Torvalds
     
  • Pull livepatching fix from Jiri Kosina:
    "Fix the way how livepatches are being stacked with respect to RCU,
    from Petr Mladek"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
    livepatch: Fix stacking of patches with respect to RCU

    Linus Torvalds
     
  • Pull more ufs fixes from Al Viro:
    "More UFS fixes, unfortunately including build regression fix for the
    64-bit s_dsize commit. Fixed in this pile:

    - trivial bug in signedness of 32bit timestamps on ufs1

    - ESTALE instead of ufs_error() when doing open-by-fhandle on
    something deleted

    - build regression on 32bit in ufs_new_fragments() - calculating that
    many percents of u64 pulls libgcc stuff on some of those. Mea
    culpa.

    - fix hysteresis loop broken by typo in 2.4.14.7 (right next to the
    location of previous bug).

    - fix the insane limits of said hysteresis loop on filesystems with
    very low percentage of reserved blocks. If it's 5% or less, just
    use the OPTSPACE policy.

    - calculate those limits once and mount time.

    This tree does pass xfstests clean (both ufs1 and ufs2) and it _does_
    survive cross-builds.

    Again, my apologies for missing that, especially since I have noticed
    a related percentage-of-64bit issue in earlier patches (when dealing
    with amount of reserved blocks). Self-LART applied..."

    * 'ufs-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    ufs: fix the logics for tail relocation
    ufs_iget(): fail with -ESTALE on deleted inode
    fix signedness of timestamps on ufs1

    Linus Torvalds
     
  • Fix expand_upwards() on architectures with an upward-growing stack (parisc,
    metag and partly IA-64) to allow the stack to reliably grow exactly up to
    the address space limit given by TASK_SIZE.

    Signed-off-by: Helge Deller
    Acked-by: Hugh Dickins
    Signed-off-by: Linus Torvalds

    Helge Deller
     
  • Trinity gets kernel BUG at mm/mmap.c:1963! in about 3 minutes of
    mmap testing. That's the VM_BUG_ON(gap_end < gap_start) at the
    end of unmapped_area_topdown(). Linus points out how MAP_FIXED
    (which does not have to respect our stack guard gap intentions)
    could result in gap_end below gap_start there. Fix that, and
    the similar case in its alternative, unmapped_area().

    Cc: stable@vger.kernel.org
    Fixes: 1be7107fbe18 ("mm: larger stack guard gap, between vmas")
    Reported-by: Dave Jones
    Debugged-by: Linus Torvalds
    Signed-off-by: Hugh Dickins
    Acked-by: Michal Hocko
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

21 Jun, 2017

1 commit

  • Andrey reported a lockdep warning on non-initialized
    spinlock:

    INFO: trying to register non-static key.
    the code is fine but needs lockdep annotation.
    turning off the locking correctness validator.
    CPU: 1 PID: 4099 Comm: a.out Not tainted 4.12.0-rc6+ #9
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
    __dump_stack lib/dump_stack.c:16
    dump_stack+0x292/0x395 lib/dump_stack.c:52
    register_lock_class+0x717/0x1aa0 kernel/locking/lockdep.c:755
    ? 0xffffffffa0000000
    __lock_acquire+0x269/0x3690 kernel/locking/lockdep.c:3255
    lock_acquire+0x22d/0x560 kernel/locking/lockdep.c:3855
    __raw_spin_lock_bh ./include/linux/spinlock_api_smp.h:135
    _raw_spin_lock_bh+0x36/0x50 kernel/locking/spinlock.c:175
    spin_lock_bh ./include/linux/spinlock.h:304
    ip_mc_clear_src+0x27/0x1e0 net/ipv4/igmp.c:2076
    igmpv3_clear_delrec+0xee/0x4f0 net/ipv4/igmp.c:1194
    ip_mc_destroy_dev+0x4e/0x190 net/ipv4/igmp.c:1736

    We miss a spin_lock_init() in igmpv3_add_delrec(), probably
    because previously we never use it on this code path. Since
    we already unlink it from the global mc_tomb list, it is
    probably safe not to acquire this spinlock here. It does not
    harm to have it although, to avoid conditional locking.

    Fixes: c38b7d327aaf ("igmp: acquire pmc lock for ip_mc_clear_src()")
    Reported-by: Andrey Konovalov
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    WANG Cong