03 May, 2020

1 commit

  • Pull NFS client bugfixes from Trond Myklebust:
    "Highlights include:

    Stable fixes:
    - fix handling of backchannel binding in BIND_CONN_TO_SESSION

    Bugfixes:
    - Fix a credential use-after-free issue in pnfs_roc()
    - Fix potential posix_acl refcnt leak in nfs3_set_acl
    - defer slow parts of rpc_free_client() to a workqueue
    - Fix an Oopsable race in __nfs_list_for_each_server()
    - Fix trace point use-after-free race
    - Regression: the RDMA client no longer responds to server disconnect
    requests
    - Fix return values of xdr_stream_encode_item_{present, absent}
    - _pnfs_return_layout() must always wait for layoutreturn completion

    Cleanups:
    - Remove unreachable error conditions"

    * tag 'nfs-for-5.7-4' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
    NFS: Fix a race in __nfs_list_for_each_server()
    NFSv4.1: fix handling of backchannel binding in BIND_CONN_TO_SESSION
    SUNRPC: defer slow parts of rpc_free_client() to a workqueue.
    NFSv4: Remove unreachable error condition due to rpc_run_task()
    SUNRPC: Remove unreachable error condition
    xprtrdma: Fix use of xdr_stream_encode_item_{present, absent}
    xprtrdma: Fix trace point use-after-free race
    xprtrdma: Restore wake-up-all to rpcrdma_cm_event_handler()
    nfs: Fix potential posix_acl refcnt leak in nfs3_set_acl
    NFS/pnfs: Fix a credential use-after-free issue in pnfs_roc()
    NFS/pnfs: Ensure that _pnfs_return_layout() waits for layoutreturn completion

    Linus Torvalds
     

29 Apr, 2020

2 commits

  • NFSoRDMA Client Fixes for Linux 5.7

    Bugfixes:
    - Restore wake-up-all to rpcrdma_cm_event_handler()
    - Otherwise the client won't respond to server disconnect requests
    - Fix tracepoint use-after-free race
    - Fix usage of xdr_stream_encode_item_{present, absent}
    - These functions return a size on success, and not 0

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • The rpciod workqueue is on the write-out path for freeing dirty memory,
    so it is important that it never block waiting for memory to be
    allocated - this can lead to a deadlock.

    rpc_execute() - which is often called by an rpciod work item - calls
    rcp_task_release_client() which can lead to rpc_free_client().

    rpc_free_client() makes two calls which could potentially block wating
    for memory allocation.

    rpc_clnt_debugfs_unregister() calls into debugfs and will block while
    any of the debugfs files are being accessed. In particular it can block
    while any of the 'open' methods are being called and all of these use
    malloc for one thing or another. So this can deadlock if the memory
    allocation waits for NFS to complete some writes via rpciod.

    rpc_clnt_remove_pipedir() can take the inode_lock() and while it isn't
    obvious that memory allocations can happen while the lock it held, it is
    safer to assume they might and to not let rpciod call
    rpc_clnt_remove_pipedir().

    So this patch moves these two calls (together with the final kfree() and
    rpciod_down()) into a work-item to be run from the system work-queue.
    rpciod can continue its important work, and the final stages of the free
    can happen whenever they happen.

    I have seen this deadlock on a 4.12 based kernel where debugfs used
    synchronize_srcu() when removing objects. synchronize_srcu() requires a
    workqueue and there were no free workther threads and none could be
    allocated. While debugsfs no longer uses SRCU, I believe the deadlock
    is still possible.

    Signed-off-by: NeilBrown
    Signed-off-by: Trond Myklebust

    NeilBrown
     

25 Apr, 2020

2 commits

  • Pull networking fixes from David Miller:

    1) Fix memory leak in netfilter flowtable, from Roi Dayan.

    2) Ref-count leaks in netrom and tipc, from Xiyu Yang.

    3) Fix warning when mptcp socket is never accepted before close, from
    Florian Westphal.

    4) Missed locking in ovs_ct_exit(), from Tonghao Zhang.

    5) Fix large delays during PTP synchornization in cxgb4, from Rahul
    Lakkireddy.

    6) team_mode_get() can hang, from Taehee Yoo.

    7) Need to use kvzalloc() when allocating fw tracer in mlx5 driver,
    from Niklas Schnelle.

    8) Fix handling of bpf XADD on BTF memory, from Jann Horn.

    9) Fix BPF_STX/BPF_B encoding in x86 bpf jit, from Luke Nelson.

    10) Missing queue memory release in iwlwifi pcie code, from Johannes
    Berg.

    11) Fix NULL deref in macvlan device event, from Taehee Yoo.

    12) Initialize lan87xx phy correctly, from Yuiko Oshino.

    13) Fix looping between VRF and XFRM lookups, from David Ahern.

    14) etf packet scheduler assumes all sockets are full sockets, which is
    not necessarily true. From Eric Dumazet.

    15) Fix mptcp data_fin handling in RX path, from Paolo Abeni.

    16) fib_select_default() needs to handle nexthop objects, from David
    Ahern.

    17) Use GFP_ATOMIC under spinlock in mac80211_hwsim, from Wei Yongjun.

    18) vxlan and geneve use wrong nlattr array, from Sabrina Dubroca.

    19) Correct rx/tx stats in bcmgenet driver, from Doug Berger.

    20) BPF_LDX zero-extension is encoded improperly in x86_32 bpf jit, fix
    from Luke Nelson.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (100 commits)
    selftests/bpf: Fix a couple of broken test_btf cases
    tools/runqslower: Ensure own vmlinux.h is picked up first
    bpf: Make bpf_link_fops static
    bpftool: Respect the -d option in struct_ops cmd
    selftests/bpf: Add test for freplace program with expected_attach_type
    bpf: Propagate expected_attach_type when verifying freplace programs
    bpf: Fix leak in LINK_UPDATE and enforce empty old_prog_fd
    bpf, x86_32: Fix logic error in BPF_LDX zero-extension
    bpf, x86_32: Fix clobbering of dst for BPF_JSET
    bpf, x86_32: Fix incorrect encoding in BPF_LDX zero-extension
    bpf: Fix reStructuredText markup
    net: systemport: suppress warnings on failed Rx SKB allocations
    net: bcmgenet: suppress warnings on failed Rx SKB allocations
    macsec: avoid to set wrong mtu
    mac80211: sta_info: Add lockdep condition for RCU list usage
    mac80211: populate debugfs only after cfg80211 init
    net: bcmgenet: correct per TX/RX ring statistics
    net: meth: remove spurious copyright text
    net: phy: bcm84881: clear settings on link down
    chcr: Fix CPU hard lockup
    ...

    Linus Torvalds
     
  • …rnel/git/jberg/mac80211

    Johannes Berg says:

    ====================
    Just three changes:
    * fix a wrong GFP_KERNEL in hwsim
    * fix the debugfs mess after the mac80211 registration race fix
    * suppress false-positive RCU list lockdep warnings
    ====================

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

    David S. Miller
     

24 Apr, 2020

5 commits

  • The function sta_info_get_by_idx() uses RCU list primitive.
    It is called with local->sta_mtx held from mac80211/cfg.c.
    Add lockdep expression to avoid any false positive RCU list warnings.

    Signed-off-by: Madhuparna Bhowmik
    Link: https://lore.kernel.org/r/20200409082906.27427-1-madhuparnabhowmik10@gmail.com
    Signed-off-by: Johannes Berg

    Madhuparna Bhowmik
     
  • When fixing the initialization race, we neglected to account for
    the fact that debugfs is initialized in wiphy_register(), and
    some debugfs things went missing (or rather were rerooted to the
    global debugfs root).

    Fix this by adding debugfs entries only after wiphy_register().
    This requires some changes in the rate control code since it
    currently adds debugfs at alloc time, which can no longer be
    done after the reordering.

    Reported-by: Jouni Malinen
    Reported-by: kernel test robot
    Reported-by: Hauke Mehrtens
    Reported-by: Felix Fietkau
    Cc: stable@vger.kernel.org
    Fixes: 52e04b4ce5d0 ("mac80211: fix race in ieee80211_register_hw()")
    Signed-off-by: Johannes Berg
    Acked-by: Sumit Garg
    Link: https://lore.kernel.org/r/20200423111344.0e00d3346f12.Iadc76a03a55093d94391fc672e996a458702875d@changeid
    Signed-off-by: Johannes Berg

    Johannes Berg
     
  • x25_lapb_receive_frame() invokes x25_get_neigh(), which returns a
    reference of the specified x25_neigh object to "nb" with increased
    refcnt.

    When x25_lapb_receive_frame() returns, local variable "nb" becomes
    invalid, so the refcount should be decreased to keep refcount balanced.

    The reference counting issue happens in one path of
    x25_lapb_receive_frame(). When pskb_may_pull() returns false, the
    function forgets to decrease the refcnt increased by x25_get_neigh(),
    causing a refcnt leak.

    Fix this issue by calling x25_neigh_put() when pskb_may_pull() returns
    false.

    Fixes: cb101ed2c3c7 ("x25: Handle undersized/fragmented skbs")
    Signed-off-by: Xiyu Yang
    Signed-off-by: Xin Tan
    Signed-off-by: David S. Miller

    Xiyu Yang
     
  • Normal there should be checked for nla_put_in6_addr like other
    usage in net.

    Detected by CoverityScan, CID# 1461639

    Fixes: 01cacb00b35c ("mptcp: add netlink-based PM")
    Signed-off-by: Bo YU
    Acked-by: Paolo Abeni
    Signed-off-by: David S. Miller

    Bo YU
     
  • Pull nfsd fixes from Chuck Lever:
    "The first set of 5.7-rc fixes for NFS server issues.

    These were all unresolved at the time the 5.7 window opened, and
    needed some additional time to ensure they were correctly addressed.
    They are ready now.

    At the moment I know of one more urgent issue regarding the NFS
    server. A fix has been tested and is under review. I expect to send
    one more pull request, containing this fix (which now consists of 3
    patches).

    Fixes:

    - Address several use-after-free and memory leak bugs

    - Prevent a backchannel livelock"

    * tag 'nfsd-5.7-rc-1' of git://git.linux-nfs.org/projects/cel/cel-2.6:
    svcrdma: Fix leak of svc_rdma_recv_ctxt objects
    svcrdma: Fix trace point use-after-free race
    SUNRPC: Fix backchannel RPC soft lockups
    SUNRPC/cache: Fix unsafe traverse caused double-free in cache_purge
    nfsd: memory corruption in nfsd4_lock()

    Linus Torvalds
     

23 Apr, 2020

8 commits

  • A user reported [0] hitting the WARN_ON in fib_info_nh:

    [ 8633.839816] ------------[ cut here ]------------
    [ 8633.839819] WARNING: CPU: 0 PID: 1719 at include/net/nexthop.h:251 fib_select_path+0x303/0x381
    ...
    [ 8633.839846] RIP: 0010:fib_select_path+0x303/0x381
    ...
    [ 8633.839848] RSP: 0018:ffffb04d407f7d00 EFLAGS: 00010286
    [ 8633.839850] RAX: 0000000000000000 RBX: ffff9460b9897ee8 RCX: 00000000000000fe
    [ 8633.839851] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: 0000000000000000
    [ 8633.839852] RBP: ffff946076049850 R08: 0000000059263a83 R09: ffff9460840e4000
    [ 8633.839853] R10: 0000000000000014 R11: 0000000000000000 R12: ffffb04d407f7dc0
    [ 8633.839854] R13: ffffffffa4ce3240 R14: 0000000000000000 R15: ffff9460b7681f60
    [ 8633.839857] FS: 00007fcac2e02700(0000) GS:ffff9460bdc00000(0000) knlGS:0000000000000000
    [ 8633.839858] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 8633.839859] CR2: 00007f27beb77e28 CR3: 0000000077734000 CR4: 00000000000006f0
    [ 8633.839867] Call Trace:
    [ 8633.839871] ip_route_output_key_hash_rcu+0x421/0x890
    [ 8633.839873] ip_route_output_key_hash+0x5e/0x80
    [ 8633.839876] ip_route_output_flow+0x1a/0x50
    [ 8633.839878] __ip4_datagram_connect+0x154/0x310
    [ 8633.839880] ip4_datagram_connect+0x28/0x40
    [ 8633.839882] __sys_connect+0xd6/0x100
    ...

    The WARN_ON is triggered in fib_select_default which is invoked when
    there are multiple default routes. Update the function to use
    fib_info_nhc and convert the nexthop checks to use fib_nh_common.

    Add test case that covers the affected code path.

    [0] https://github.com/FRRouting/frr/issues/6089

    Fixes: 493ced1ac47c ("ipv4: Allow routes to use nexthop objects")
    Signed-off-by: David Ahern
    Signed-off-by: David S. Miller

    David Ahern
     
  • The NetLabel Tools project has moved from http://netlabel.sf.net to a
    GitHub project. Update to directly refer to the new home for the tools.

    Signed-off-by: Salvatore Bonaccorso
    Acked-by: Paul Moore
    Signed-off-by: David S. Miller

    Salvatore Bonaccorso
     
  • The data fin flag is set only via a DSS option, but
    mptcp_incoming_options() copies it unconditionally from the
    provided RX options.

    Since we do not clear all the mptcp sock RX options in a
    socket free/alloc cycle, we can end-up with a stray data_fin
    value while parsing e.g. MPC packets.

    That would lead to mapping data corruption and will trigger
    a few WARN_ON() in the RX path.

    Instead of adding a costly memset(), fetch the data_fin flag
    only for DSS packets - when we always explicitly initialize
    such bit at option parsing time.

    Fixes: 648ef4b88673 ("mptcp: Implement MPTCP receive path")
    Reviewed-by: Mat Martineau
    Signed-off-by: Paolo Abeni
    Signed-off-by: David S. Miller

    Paolo Abeni
     
  • When starting shutdown in sctp_sf_do_dupcook_a(), get the value for
    SHUTDOWN Cumulative TSN Ack from the new association, which is
    reconstructed from the cookie, instead of the old association, which
    the peer doesn't have anymore.

    Otherwise the SHUTDOWN is either ignored or replied to with an ABORT
    by the peer because CTSN Ack doesn't match the peer's Initial TSN.

    Fixes: bdf6fa52f01b ("sctp: handle association restarts when the socket is closed.")
    Signed-off-by: Jere Leppänen
    Acked-by: Marcelo Ricardo Leitner
    Signed-off-by: David S. Miller

    Jere Leppänen
     
  • When we start shutdown in sctp_sf_do_dupcook_a(), we want to bundle
    the SHUTDOWN with the COOKIE-ACK to ensure that the peer receives them
    at the same time and in the correct order. This bundling was broken by
    commit 4ff40b86262b ("sctp: set chunk transport correctly when it's a
    new asoc"), which assigns a transport for the COOKIE-ACK, but not for
    the SHUTDOWN.

    Fix this by passing a reference to the COOKIE-ACK chunk as an argument
    to sctp_sf_do_9_2_start_shutdown() and onward to
    sctp_make_shutdown(). This way the SHUTDOWN chunk is assigned the same
    transport as the COOKIE-ACK chunk, which allows them to be bundled.

    In sctp_sf_do_9_2_start_shutdown(), the void *arg parameter was
    previously unused. Now that we're taking it into use, it must be a
    valid pointer to a chunk, or NULL. There is only one call site where
    it's not, in sctp_sf_autoclose_timer_expire(). Fix that too.

    Fixes: 4ff40b86262b ("sctp: set chunk transport correctly when it's a new asoc")
    Signed-off-by: Jere Leppänen
    Acked-by: Marcelo Ricardo Leitner
    Signed-off-by: David S. Miller

    Jere Leppänen
     
  • There is no reason to fail the probing of the switch if the MTU couldn't
    be configured correctly (either the switch port itself, or the host
    port) for whatever reason. MTU-sized traffic probably won't work, sure,
    but we can still probably limp on and support some form of communication
    anyway, which the users would probably appreciate more.

    Fixes: bfcb813203e6 ("net: dsa: configure the MTU for switch ports")
    Reported-by: Oleksij Rempel
    Signed-off-by: Vladimir Oltean
    Reviewed-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Vladimir Oltean
     
  • skb->sk does not always point to a full blown socket,
    we need to use sk_fullsock() before accessing fields which
    only make sense on full socket.

    BUG: KASAN: use-after-free in report_sock_error+0x286/0x300 net/sched/sch_etf.c:141
    Read of size 1 at addr ffff88805eb9b245 by task syz-executor.5/9630

    CPU: 1 PID: 9630 Comm: syz-executor.5 Not tainted 5.7.0-rc2-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:

    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0x188/0x20d lib/dump_stack.c:118
    print_address_description.constprop.0.cold+0xd3/0x315 mm/kasan/report.c:382
    __kasan_report.cold+0x35/0x4d mm/kasan/report.c:511
    kasan_report+0x33/0x50 mm/kasan/common.c:625
    report_sock_error+0x286/0x300 net/sched/sch_etf.c:141
    etf_enqueue_timesortedlist+0x389/0x740 net/sched/sch_etf.c:170
    __dev_xmit_skb net/core/dev.c:3710 [inline]
    __dev_queue_xmit+0x154a/0x30a0 net/core/dev.c:4021
    neigh_hh_output include/net/neighbour.h:499 [inline]
    neigh_output include/net/neighbour.h:508 [inline]
    ip6_finish_output2+0xfb5/0x25b0 net/ipv6/ip6_output.c:117
    __ip6_finish_output+0x442/0xab0 net/ipv6/ip6_output.c:143
    ip6_finish_output+0x34/0x1f0 net/ipv6/ip6_output.c:153
    NF_HOOK_COND include/linux/netfilter.h:296 [inline]
    ip6_output+0x239/0x810 net/ipv6/ip6_output.c:176
    dst_output include/net/dst.h:435 [inline]
    NF_HOOK include/linux/netfilter.h:307 [inline]
    NF_HOOK include/linux/netfilter.h:301 [inline]
    ip6_xmit+0xe1a/0x2090 net/ipv6/ip6_output.c:280
    tcp_v6_send_synack+0x4e7/0x960 net/ipv6/tcp_ipv6.c:521
    tcp_rtx_synack+0x10d/0x1a0 net/ipv4/tcp_output.c:3916
    inet_rtx_syn_ack net/ipv4/inet_connection_sock.c:669 [inline]
    reqsk_timer_handler+0x4c2/0xb40 net/ipv4/inet_connection_sock.c:763
    call_timer_fn+0x1ac/0x780 kernel/time/timer.c:1405
    expire_timers kernel/time/timer.c:1450 [inline]
    __run_timers kernel/time/timer.c:1774 [inline]
    __run_timers kernel/time/timer.c:1741 [inline]
    run_timer_softirq+0x623/0x1600 kernel/time/timer.c:1787
    __do_softirq+0x26c/0x9f7 kernel/softirq.c:292
    invoke_softirq kernel/softirq.c:373 [inline]
    irq_exit+0x192/0x1d0 kernel/softirq.c:413
    exiting_irq arch/x86/include/asm/apic.h:546 [inline]
    smp_apic_timer_interrupt+0x19e/0x600 arch/x86/kernel/apic/apic.c:1140
    apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:829

    RIP: 0010:des_encrypt+0x157/0x9c0 lib/crypto/des.c:792
    Code: 85 22 06 00 00 41 31 dc 41 8b 4d 04 44 89 e2 41 83 e4 3f 4a 8d 3c a5 60 72 72 88 81 e2 3f 3f 3f 3f 48 89 f8 48 c1 e8 03 31 d9 b6 34 28 48 89 f8 c1 c9 04 83 e0 07 83 c0 03 40 38 f0 7c 09 40
    RSP: 0018:ffffc90003b5f6c0 EFLAGS: 00000282 ORIG_RAX: ffffffffffffff13
    RAX: 1ffffffff10e4e55 RBX: 00000000d2f846d0 RCX: 00000000d2f846d0
    RDX: 0000000012380612 RSI: ffffffff839863ca RDI: ffffffff887272a8
    RBP: dffffc0000000000 R08: ffff888091d0a380 R09: 0000000000800081
    R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000012
    R13: ffff8880a8ae8078 R14: 00000000c545c93e R15: 0000000000000006
    cipher_crypt_one crypto/cipher.c:75 [inline]
    crypto_cipher_encrypt_one+0x124/0x210 crypto/cipher.c:82
    crypto_cbcmac_digest_update+0x1b5/0x250 crypto/ccm.c:830
    crypto_shash_update+0xc4/0x120 crypto/shash.c:119
    shash_ahash_update+0xa3/0x110 crypto/shash.c:246
    crypto_ahash_update include/crypto/hash.h:547 [inline]
    hash_sendmsg+0x518/0xad0 crypto/algif_hash.c:102
    sock_sendmsg_nosec net/socket.c:652 [inline]
    sock_sendmsg+0xcf/0x120 net/socket.c:672
    ____sys_sendmsg+0x308/0x7e0 net/socket.c:2362
    ___sys_sendmsg+0x100/0x170 net/socket.c:2416
    __sys_sendmmsg+0x195/0x480 net/socket.c:2506
    __do_sys_sendmmsg net/socket.c:2535 [inline]
    __se_sys_sendmmsg net/socket.c:2532 [inline]
    __x64_sys_sendmmsg+0x99/0x100 net/socket.c:2532
    do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
    entry_SYSCALL_64_after_hwframe+0x49/0xb3
    RIP: 0033:0x45c829
    Code: 0d b7 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 3d 01 f0 ff ff 0f 83 db b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f6d9528ec78 EFLAGS: 00000246 ORIG_RAX: 0000000000000133
    RAX: ffffffffffffffda RBX: 00000000004fc080 RCX: 000000000045c829
    RDX: 0000000000000001 RSI: 0000000020002640 RDI: 0000000000000004
    RBP: 000000000078bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000008d7 R14: 00000000004cb7aa R15: 00007f6d9528f6d4

    Fixes: 4b15c7075352 ("net/sched: Make etf report drops on error_queue")
    Fixes: 25db26a91364 ("net/sched: Introduce the ETF Qdisc")
    Signed-off-by: Eric Dumazet
    Reported-by: syzbot
    Cc: Vinicius Costa Gomes
    Reviewed-by: Vinicius Costa Gomes
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • IPSKB_XFRM_TRANSFORMED and IP6SKB_XFRM_TRANSFORMED are skb flags set by
    xfrm code to tell other skb handlers that the packet has been passed
    through the xfrm output functions. Simplify the code and just always
    set them rather than conditionally based on netfilter enabled thus
    making the flag available for other users.

    Signed-off-by: David Ahern
    Signed-off-by: David S. Miller

    David Ahern
     

22 Apr, 2020

3 commits

  • rpc_clnt_test_and_add_xprt() invokes rpc_call_null_helper(), which
    return the value of rpc_run_task() to "task". Since rpc_run_task() is
    impossible to return an ERR pointer, there is no need to add the
    IS_ERR() condition on "task" here. So we need to remove it.

    Fixes: 7f554890587c ("SUNRPC: Allow addition of new transports to a struct rpc_clnt")
    Signed-off-by: Xiyu Yang
    Signed-off-by: Xin Tan
    Signed-off-by: Trond Myklebust

    Xiyu Yang
     
  • Commit 018d26fcd12a ("cgroup, netclassid: periodically release file_lock
    on classid") added a second cond_resched to write_classid indirectly by
    update_classid_task. Remove the one in write_classid.

    Signed-off-by: Jiri Slaby
    Cc: Dmitry Yakunin
    Cc: Konstantin Khlebnikov
    Cc: David S. Miller
    Signed-off-by: David S. Miller

    Jiri Slaby
     
  • Pablo Neira Ayuso says:

    ====================
    Netfilter fixes for net

    The following patchset contains Netfilter fixes for net:

    1) flow_block_cb memleak in nf_flow_table_offload_del_cb(), from Roi Dayan.

    2) Fix error path handling in nf_nat_inet_register_fn(), from Hillf Danton.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

21 Apr, 2020

5 commits

  • We don't need them, as we can use the current ingress opt
    data instead. Setting them in syn_recv_sock() may causes
    inconsistent mptcp socket status, as per previous commit.

    Fixes: cc7972ea1932 ("mptcp: parse and emit MP_CAPABLE option according to v1 spec")
    Signed-off-by: Paolo Abeni
    Signed-off-by: David S. Miller

    Paolo Abeni
     
  • If multiple CPUs races on the same req_sock in syn_recv_sock(),
    flipping such field can cause inconsistent child socket status.

    When racing, the CPU losing the req ownership may still change
    the mptcp request socket mp_capable flag while the CPU owning
    the request is cloning the socket, leaving the child socket with
    'is_mptcp' set but no 'mp_capable' flag.

    Such socket will stay with 'conn' field cleared, heading to oops
    in later mptcp callback.

    Address the issue tracking the fallback status in a local variable.

    Fixes: 58b09919626b ("mptcp: create msk early")
    Co-developed-by: Florian Westphal
    Signed-off-by: Florian Westphal
    Signed-off-by: Paolo Abeni
    Signed-off-by: David S. Miller

    Paolo Abeni
     
  • Following splat can occur during self test:

    BUG: KASAN: use-after-free in subflow_data_ready+0x156/0x160
    Read of size 8 at addr ffff888100c35c28 by task mptcp_connect/4808

    subflow_data_ready+0x156/0x160
    tcp_child_process+0x6a3/0xb30
    tcp_v4_rcv+0x2231/0x3730
    ip_protocol_deliver_rcu+0x5c/0x860
    ip_local_deliver_finish+0x220/0x360
    ip_local_deliver+0x1c8/0x4e0
    ip_rcv_finish+0x1da/0x2f0
    ip_rcv+0xd0/0x3c0
    __netif_receive_skb_one_core+0xf5/0x160
    __netif_receive_skb+0x27/0x1c0
    process_backlog+0x21e/0x780
    net_rx_action+0x35f/0xe90
    do_softirq+0x4c/0x50
    [..]

    This occurs when accessing subflow_ctx->conn.

    Problem is that tcp_child_process() calls listen sockets'
    sk_data_ready() notification, but it doesn't hold the listener
    lock. Another cpu calling close() on the listener will then cause
    transition of refcount to 0.

    Fixes: 58b09919626bf ("mptcp: create msk early")
    Signed-off-by: Florian Westphal
    Signed-off-by: Paolo Abeni
    Signed-off-by: David S. Miller

    Florian Westphal
     
  • Commit b6f6118901d1 ("ipv6: restrict IPV6_ADDRFORM operation") fixed a
    problem found by syzbot an unfortunate logic error meant that it
    also broke IPV6_ADDRFORM.

    Rearrange the checks so that the earlier test is just one of the series
    of checks made before moving the socket from IPv6 to IPv4.

    Fixes: b6f6118901d1 ("ipv6: restrict IPV6_ADDRFORM operation")
    Signed-off-by: John Haxby
    Cc: stable@vger.kernel.org
    Signed-off-by: David S. Miller

    John Haxby
     
  • syzbot wrote:
    | =============================
    | WARNING: suspicious RCU usage
    | 5.7.0-rc1+ #45 Not tainted
    | -----------------------------
    | net/openvswitch/conntrack.c:1898 RCU-list traversed in non-reader section!!
    |
    | other info that might help us debug this:
    | rcu_scheduler_active = 2, debug_locks = 1
    | ...
    |
    | stack backtrace:
    | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
    | Workqueue: netns cleanup_net
    | Call Trace:
    | ...
    | ovs_ct_exit
    | ovs_exit_net
    | ops_exit_list.isra.7
    | cleanup_net
    | process_one_work
    | worker_thread

    To avoid that warning, invoke the ovs_ct_exit under ovs_lock and add
    lockdep_ovsl_is_held as optional lockdep expression.

    Link: https://lore.kernel.org/lkml/000000000000e642a905a0cbee6e@google.com
    Fixes: 11efd5cb04a1 ("openvswitch: Support conntrack zone limit")
    Cc: Pravin B Shelar
    Cc: Yi-Hung Wei
    Reported-by: syzbot+7ef50afd3a211f879112@syzkaller.appspotmail.com
    Signed-off-by: Tonghao Zhang
    Acked-by: Pravin B Shelar
    Signed-off-by: David S. Miller

    Tonghao Zhang
     

20 Apr, 2020

3 commits

  • These new helpers do not return 0 on success, they return the
    encoded size. Thus they are not a drop-in replacement for the
    old helpers.

    Fixes: 5c266df52701 ("SUNRPC: Add encoders for list item discriminators")
    Signed-off-by: Chuck Lever
    Signed-off-by: Anna Schumaker

    Chuck Lever
     
  • It's not safe to use resources pointed to by the @send_wr of
    ib_post_send() _after_ that function returns. Those resources are
    typically freed by the Send completion handler, which can run before
    ib_post_send() returns.

    Thus the trace points currently around ib_post_send() in the
    client's RPC/RDMA transport are a hazard, even when they are
    disabled. Rearrange them so that they touch the Work Request only
    _before_ ib_post_send() is invoked.

    Fixes: ab03eff58eb5 ("xprtrdma: Add trace points in RPC Call transmit paths")
    Signed-off-by: Chuck Lever
    Signed-off-by: Anna Schumaker

    Chuck Lever
     
  • Commit e28ce90083f0 ("xprtrdma: kmalloc rpcrdma_ep separate from
    rpcrdma_xprt") erroneously removed a xprt_force_disconnect()
    call from the "transport disconnect" path. The result was that the
    client no longer responded to server-side disconnect requests.

    Restore that call.

    Fixes: e28ce90083f0 ("xprtrdma: kmalloc rpcrdma_ep separate from rpcrdma_xprt")
    Signed-off-by: Chuck Lever
    Signed-off-by: Anna Schumaker

    Chuck Lever
     

19 Apr, 2020

7 commits

  • A case of warning was reported by syzbot.

    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 19934 at net/netfilter/nf_nat_core.c:1106
    nf_nat_unregister_fn+0x532/0x5c0 net/netfilter/nf_nat_core.c:1106
    Kernel panic - not syncing: panic_on_warn set ...
    CPU: 0 PID: 19934 Comm: syz-executor.5 Not tainted 5.6.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0x188/0x20d lib/dump_stack.c:118
    panic+0x2e3/0x75c kernel/panic.c:221
    __warn.cold+0x2f/0x35 kernel/panic.c:582
    report_bug+0x27b/0x2f0 lib/bug.c:195
    fixup_bug arch/x86/kernel/traps.c:175 [inline]
    fixup_bug arch/x86/kernel/traps.c:170 [inline]
    do_error_trap+0x12b/0x220 arch/x86/kernel/traps.c:267
    do_invalid_op+0x32/0x40 arch/x86/kernel/traps.c:286
    invalid_op+0x23/0x30 arch/x86/entry/entry_64.S:1027
    RIP: 0010:nf_nat_unregister_fn+0x532/0x5c0 net/netfilter/nf_nat_core.c:1106
    Code: ff df 48 c1 ea 03 80 3c 02 00 75 75 48 8b 44 24 10 4c 89 ef 48 c7 00 00 00 00 00 e8 e8 f8 53 fb e9 4d fe ff ff e8 ee 9c 16 fb 0b e9 41 fe ff ff e8 e2 45 54 fb e9 b5 fd ff ff 48 8b 7c 24 20
    RSP: 0018:ffffc90005487208 EFLAGS: 00010246
    RAX: 0000000000040000 RBX: 0000000000000004 RCX: ffffc9001444a000
    RDX: 0000000000040000 RSI: ffffffff865c94a2 RDI: 0000000000000005
    RBP: ffff88808b5cf000 R08: ffff8880a2620140 R09: fffffbfff14bcd79
    R10: ffffc90005487208 R11: fffffbfff14bcd78 R12: 0000000000000000
    R13: 0000000000000001 R14: 0000000000000001 R15: 0000000000000000
    nf_nat_ipv6_unregister_fn net/netfilter/nf_nat_proto.c:1017 [inline]
    nf_nat_inet_register_fn net/netfilter/nf_nat_proto.c:1038 [inline]
    nf_nat_inet_register_fn+0xfc/0x140 net/netfilter/nf_nat_proto.c:1023
    nf_tables_register_hook net/netfilter/nf_tables_api.c:224 [inline]
    nf_tables_addchain.constprop.0+0x82e/0x13c0 net/netfilter/nf_tables_api.c:1981
    nf_tables_newchain+0xf68/0x16a0 net/netfilter/nf_tables_api.c:2235
    nfnetlink_rcv_batch+0x83a/0x1610 net/netfilter/nfnetlink.c:433
    nfnetlink_rcv_skb_batch net/netfilter/nfnetlink.c:543 [inline]
    nfnetlink_rcv+0x3af/0x420 net/netfilter/nfnetlink.c:561
    netlink_unicast_kernel net/netlink/af_netlink.c:1303 [inline]
    netlink_unicast+0x537/0x740 net/netlink/af_netlink.c:1329
    netlink_sendmsg+0x882/0xe10 net/netlink/af_netlink.c:1918
    sock_sendmsg_nosec net/socket.c:652 [inline]
    sock_sendmsg+0xcf/0x120 net/socket.c:672
    ____sys_sendmsg+0x6bf/0x7e0 net/socket.c:2362
    ___sys_sendmsg+0x100/0x170 net/socket.c:2416
    __sys_sendmsg+0xec/0x1b0 net/socket.c:2449
    do_syscall_64+0xf6/0x7d0 arch/x86/entry/common.c:295
    entry_SYSCALL_64_after_hwframe+0x49/0xb3

    and to quiesce it, unregister NFPROTO_IPV6 hook instead of NFPROTO_INET
    in case of failing to register NFPROTO_IPV4 hook.

    Reported-by: syzbot
    Fixes: d164385ec572 ("netfilter: nat: add inet family nat support")
    Cc: Florian Westphal
    Cc: Stefano Brivio
    Signed-off-by: Hillf Danton
    Signed-off-by: Pablo Neira Ayuso

    Hillf Danton
     
  • We need to set sk_state to CLOSED, else we will get following:

    IPv4: Attempt to release TCP socket in state 3 00000000b95f109e
    IPv4: Attempt to release TCP socket in state 10 00000000b95f109e

    First one is from inet_sock_destruct(), second one from
    mptcp_sk_clone failure handling. Setting sk_state to CLOSED isn't
    enough, we also need to orphan sk so it has DEAD flag set.
    Otherwise, a very similar warning is printed from inet_sock_destruct().

    Signed-off-by: Florian Westphal
    Signed-off-by: David S. Miller

    Florian Westphal
     
  • Following snippet (replicated from syzkaller reproducer) generates
    warning: "IPv4: Attempt to release TCP socket in state 1".

    int main(void) {
    struct sockaddr_in sin1 = { .sin_family = 2, .sin_port = 0x4e20,
    .sin_addr.s_addr = 0x010000e0, };
    struct sockaddr_in sin2 = { .sin_family = 2,
    .sin_addr.s_addr = 0x0100007f, };
    struct sockaddr_in sin3 = { .sin_family = 2, .sin_port = 0x4e20,
    .sin_addr.s_addr = 0x0100007f, };
    int r0 = socket(0x2, 0x1, 0x106);
    int r1 = socket(0x2, 0x1, 0x106);

    bind(r1, (void *)&sin1, sizeof(sin1));
    connect(r1, (void *)&sin2, sizeof(sin2));
    listen(r1, 3);
    return connect(r0, (void *)&sin3, 0x4d);
    }

    Reason is that the newly generated mptcp socket is closed via the ulp
    release of the tcp listener socket when its accept backlog gets purged.

    To fix this, delay setting the ESTABLISHED state until after userspace
    calls accept and via mptcp specific destructor.

    Fixes: 58b09919626bf ("mptcp: create msk early")
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/9
    Signed-off-by: Florian Westphal
    Signed-off-by: David S. Miller

    Florian Westphal
     
  • This patch makes it impossible that cmpri or cmpre values are set to the
    value 16 which is not possible, because these are 4 bit values. We
    currently run in an overflow when assigning the value 16 to it.

    According to the standard a value of 16 can be interpreted as a full
    elided address which isn't possible to set as compression value. A reason
    why this cannot be set is that the current ipv6 header destination address
    should never show up inside the segments of the rpl header. In this case we
    run in a overflow and the address will have no compression at all. Means
    cmpri or compre is set to 0.

    As we handle cmpri and cmpre sometimes as unsigned char or 4 bit value
    inside the rpl header the current behaviour ends in an invalid header
    format. This patch simple use the best compression method if we ever run
    into the case that the destination address is showed up inside the rpl
    segments. We avoid the overflow handling and the rpl header is still valid,
    even when we have the destination address inside the rpl segments.

    Signed-off-by: Alexander Aring
    Signed-off-by: David S. Miller

    Alexander Aring
     
  • tipc_rcv() invokes tipc_node_find() twice, which returns a reference of
    the specified tipc_node object to "n" with increased refcnt.

    When tipc_rcv() returns or a new object is assigned to "n", the original
    local reference of "n" becomes invalid, so the refcount should be
    decreased to keep refcount balanced.

    The issue happens in some paths of tipc_rcv(), which forget to decrease
    the refcnt increased by tipc_node_find() and will cause a refcnt leak.

    Fix this issue by calling tipc_node_put() before the original object
    pointed by "n" becomes invalid.

    Signed-off-by: Xiyu Yang
    Signed-off-by: Xin Tan
    Signed-off-by: David S. Miller

    Xiyu Yang
     
  • tipc_crypto_rcv() invokes tipc_aead_get(), which returns a reference of
    the tipc_aead object to "aead" with increased refcnt.

    When tipc_crypto_rcv() returns, the original local reference of "aead"
    becomes invalid, so the refcount should be decreased to keep refcount
    balanced.

    The issue happens in one error path of tipc_crypto_rcv(). When TIPC
    message decryption status is EINPROGRESS or EBUSY, the function forgets
    to decrease the refcnt increased by tipc_aead_get() and causes a refcnt
    leak.

    Fix this issue by calling tipc_aead_put() on the error path when TIPC
    message decryption status is EINPROGRESS or EBUSY.

    Signed-off-by: Xiyu Yang
    Signed-off-by: Xin Tan
    Signed-off-by: David S. Miller

    Xiyu Yang
     
  • nr_add_node() invokes nr_neigh_get_dev(), which returns a local
    reference of the nr_neigh object to "nr_neigh" with increased refcnt.

    When nr_add_node() returns, "nr_neigh" becomes invalid, so the refcount
    should be decreased to keep refcount balanced.

    The issue happens in one normal path of nr_add_node(), which forgets to
    decrease the refcnt increased by nr_neigh_get_dev() and causes a refcnt
    leak. It should decrease the refcnt before the function returns like
    other normal paths do.

    Fix this issue by calling nr_neigh_put() before the nr_add_node()
    returns.

    Signed-off-by: Xiyu Yang
    Signed-off-by: Xin Tan
    Signed-off-by: David S. Miller

    Xiyu Yang
     

18 Apr, 2020

3 commits

  • Utilize the xpo_release_rqst transport method to ensure that each
    rqstp's svc_rdma_recv_ctxt object is released even when the server
    cannot return a Reply for that rqstp.

    Without this fix, each RPC whose Reply cannot be sent leaks one
    svc_rdma_recv_ctxt. This is a 2.5KB structure, a 4KB DMA-mapped
    Receive buffer, and any pages that might be part of the Reply
    message.

    The leak is infrequent unless the network fabric is unreliable or
    Kerberos is in use, as GSS sequence window overruns, which result
    in connection loss, are more common on fast transports.

    Fixes: 3a88092ee319 ("svcrdma: Preserve Receive buffer until svc_rdma_sendto")
    Signed-off-by: Chuck Lever

    Chuck Lever
     
  • I hit this while testing nfsd-5.7 with kernel memory debugging
    enabled on my server:

    Mar 30 13:21:45 klimt kernel: BUG: unable to handle page fault for address: ffff8887e6c279a8
    Mar 30 13:21:45 klimt kernel: #PF: supervisor read access in kernel mode
    Mar 30 13:21:45 klimt kernel: #PF: error_code(0x0000) - not-present page
    Mar 30 13:21:45 klimt kernel: PGD 3601067 P4D 3601067 PUD 87c519067 PMD 87c3e2067 PTE 800ffff8193d8060
    Mar 30 13:21:45 klimt kernel: Oops: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
    Mar 30 13:21:45 klimt kernel: CPU: 2 PID: 1933 Comm: nfsd Not tainted 5.6.0-rc6-00040-g881e87a3c6f9 #1591
    Mar 30 13:21:45 klimt kernel: Hardware name: Supermicro Super Server/X10SRL-F, BIOS 1.0c 09/09/2015
    Mar 30 13:21:45 klimt kernel: RIP: 0010:svc_rdma_post_chunk_ctxt+0xab/0x284 [rpcrdma]
    Mar 30 13:21:45 klimt kernel: Code: c1 83 34 02 00 00 29 d0 85 c0 7e 72 48 8b bb a0 02 00 00 48 8d 54 24 08 4c 89 e6 48 8b 07 48 8b 40 20 e8 5a 5c 2b e1 41 89 c6 45 20 89 44 24 04 8b 05 02 e9 01 00 85 c0 7e 33 e9 5e 01 00 00
    Mar 30 13:21:45 klimt kernel: RSP: 0018:ffffc90000dfbdd8 EFLAGS: 00010286
    Mar 30 13:21:45 klimt kernel: RAX: 0000000000000000 RBX: ffff8887db8db400 RCX: 0000000000000030
    Mar 30 13:21:45 klimt kernel: RDX: 0000000000000040 RSI: 0000000000000000 RDI: 0000000000000246
    Mar 30 13:21:45 klimt kernel: RBP: ffff8887e6c27988 R08: 0000000000000000 R09: 0000000000000004
    Mar 30 13:21:45 klimt kernel: R10: ffffc90000dfbdd8 R11: 00c068ef00000000 R12: ffff8887eb4e4a80
    Mar 30 13:21:45 klimt kernel: R13: ffff8887db8db634 R14: 0000000000000000 R15: ffff8887fc931000
    Mar 30 13:21:45 klimt kernel: FS: 0000000000000000(0000) GS:ffff88885bd00000(0000) knlGS:0000000000000000
    Mar 30 13:21:45 klimt kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    Mar 30 13:21:45 klimt kernel: CR2: ffff8887e6c279a8 CR3: 000000081b72e002 CR4: 00000000001606e0
    Mar 30 13:21:45 klimt kernel: Call Trace:
    Mar 30 13:21:45 klimt kernel: ? svc_rdma_vec_to_sg+0x7f/0x7f [rpcrdma]
    Mar 30 13:21:45 klimt kernel: svc_rdma_send_write_chunk+0x59/0xce [rpcrdma]
    Mar 30 13:21:45 klimt kernel: svc_rdma_sendto+0xf9/0x3ae [rpcrdma]
    Mar 30 13:21:45 klimt kernel: ? nfsd_destroy+0x51/0x51 [nfsd]
    Mar 30 13:21:45 klimt kernel: svc_send+0x105/0x1e3 [sunrpc]
    Mar 30 13:21:45 klimt kernel: nfsd+0xf2/0x149 [nfsd]
    Mar 30 13:21:45 klimt kernel: kthread+0xf6/0xfb
    Mar 30 13:21:45 klimt kernel: ? kthread_queue_delayed_work+0x74/0x74
    Mar 30 13:21:45 klimt kernel: ret_from_fork+0x3a/0x50
    Mar 30 13:21:45 klimt kernel: Modules linked in: ocfs2_dlmfs ocfs2_stack_o2cb ocfs2_dlm ocfs2_nodemanager ocfs2_stackglue ib_umad ib_ipoib mlx4_ib sb_edac x86_pkg_temp_thermal iTCO_wdt iTCO_vendor_support coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel glue_helper crypto_simd cryptd pcspkr rpcrdma i2c_i801 rdma_ucm lpc_ich mfd_core ib_iser rdma_cm iw_cm ib_cm mei_me raid0 libiscsi mei sg scsi_transport_iscsi ioatdma wmi ipmi_si ipmi_devintf ipmi_msghandler acpi_power_meter nfsd nfs_acl lockd auth_rpcgss grace sunrpc ip_tables xfs libcrc32c mlx4_en sd_mod sr_mod cdrom mlx4_core crc32c_intel igb nvme i2c_algo_bit ahci i2c_core libahci nvme_core dca libata t10_pi qedr dm_mirror dm_region_hash dm_log dm_mod dax qede qed crc8 ib_uverbs ib_core
    Mar 30 13:21:45 klimt kernel: CR2: ffff8887e6c279a8
    Mar 30 13:21:45 klimt kernel: ---[ end trace 87971d2ad3429424 ]---

    It's absolutely not safe to use resources pointed to by the @send_wr
    argument of ib_post_send() _after_ that function returns. Those
    resources are typically freed by the Send completion handler, which
    can run before ib_post_send() returns.

    Thus the trace points currently around ib_post_send() in the
    server's RPC/RDMA transport are a hazard, even when they are
    disabled. Rearrange them so that they touch the Work Request only
    _before_ ib_post_send() is invoked.

    Fixes: bd2abef33394 ("svcrdma: Trace key RDMA API events")
    Fixes: 4201c7464753 ("svcrdma: Introduce svc_rdma_send_ctxt")
    Signed-off-by: Chuck Lever

    Chuck Lever
     
  • Currently, after the forward channel connection goes away,
    backchannel operations are causing soft lockups on the server
    because call_transmit_status's SOFTCONN logic ignores ENOTCONN.
    Such backchannel Calls are aggressively retried until the client
    reconnects.

    Backchannel Calls should use RPC_TASK_NOCONNECT rather than
    RPC_TASK_SOFTCONN. If there is no forward connection, the server is
    not capable of establishing a connection back to the client, thus
    that backchannel request should fail before the server attempts to
    send it. Commit 58255a4e3ce5 ("NFSD: NFSv4 callback client should
    use RPC_TASK_SOFTCONN") was merged several years before
    RPC_TASK_NOCONNECT was available.

    Because setup_callback_client() explicitly sets NOPING, the NFSv4.0
    callback connection depends on the first callback RPC to initiate
    a connection to the client. Thus NFSv4.0 needs to continue to use
    RPC_TASK_SOFTCONN.

    Suggested-by: Trond Myklebust
    Signed-off-by: Chuck Lever
    Cc: # v4.20+

    Chuck Lever
     

17 Apr, 2020

1 commit

  • Pull networking fixes from David Miller:

    1) Disable RISCV BPF JIT builds when !MMU, from Björn Töpel.

    2) nf_tables leaves dangling pointer after free, fix from Eric Dumazet.

    3) Out of boundary write in __xsk_rcv_memcpy(), fix from Li RongQing.

    4) Adjust icmp6 message source address selection when routes have a
    preferred source address set, from Tim Stallard.

    5) Be sure to validate HSR protocol version when creating new links,
    from Taehee Yoo.

    6) CAP_NET_ADMIN should be sufficient to manage l2tp tunnels even in
    non-initial namespaces, from Michael Weiß.

    7) Missing release firmware call in mlx5, from Eran Ben Elisha.

    8) Fix variable type in macsec_changelink(), caught by KASAN. Fix from
    Taehee Yoo.

    9) Fix pause frame negotiation in marvell phy driver, from Clemens
    Gruber.

    10) Record RX queue early enough in tun packet paths such that XDP
    programs will see the correct RX queue index, from Gilberto Bertin.

    11) Fix double unlock in mptcp, from Florian Westphal.

    12) Fix offset overflow in ARM bpf JIT, from Luke Nelson.

    13) marvell10g needs to soft reset PHY when coming out of low power
    mode, from Russell King.

    14) Fix MTU setting regression in stmmac for some chip types, from
    Florian Fainelli.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (101 commits)
    amd-xgbe: Use __napi_schedule() in BH context
    mISDN: make dmril and dmrim static
    net: stmmac: dwmac-sunxi: Provide TX and RX fifo sizes
    net: dsa: mt7530: fix tagged frames pass-through in VLAN-unaware mode
    tipc: fix incorrect increasing of link window
    Documentation: Fix tcp_challenge_ack_limit default value
    net: tulip: make early_486_chipsets static
    dt-bindings: net: ethernet-phy: add desciption for ethernet-phy-id1234.d400
    ipv6: remove redundant assignment to variable err
    net/rds: Use ERR_PTR for rds_message_alloc_sgs()
    net: mscc: ocelot: fix untagged packet drops when enslaving to vlan aware bridge
    selftests/bpf: Check for correct program attach/detach in xdp_attach test
    libbpf: Fix type of old_fd in bpf_xdp_set_link_opts
    libbpf: Always specify expected_attach_type on program load if supported
    xsk: Add missing check on user supplied headroom size
    mac80211: fix channel switch trigger from unknown mesh peer
    mac80211: fix race in ieee80211_register_hw()
    net: marvell10g: soft-reset the PHY when coming out of low power
    net: marvell10g: report firmware version
    net/cxgb4: Check the return from t4_query_params properly
    ...

    Linus Torvalds