1. 28 May, 2022 8 commits
    • Eric Dumazet's avatar
      tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd · 11825765
      Eric Dumazet authored
      syzbot got a new report [1] finally pointing to a very old bug,
      added in initial support for MTU probing.
      
      tcp_mtu_probe() has checks about starting an MTU probe if
      tcp_snd_cwnd(tp) >= 11.
      
      But nothing prevents tcp_snd_cwnd(tp) to be reduced later
      and before the MTU probe succeeds.
      
      This bug would lead to potential zero-divides.
      
      Debugging added in commit 40570375 ("tcp: add accessors
      to read/set tp->snd_cwnd") has paid off :)
      
      While we are at it, address potential overflows in this code.
      
      [1]
      WARNING: CPU: 1 PID: 14132 at include/net/tcp.h:1219 tcp_mtup_probe_success+0x366/0x570 net/ipv4/tcp_input.c:2712
      Modules linked in:
      CPU: 1 PID: 14132 Comm: syz-executor.2 Not tainted 5.18.0-syzkaller-07857-gbabf0bb9 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:tcp_snd_cwnd_set include/net/tcp.h:1219 [inline]
      RIP: 0010:tcp_mtup_probe_success+0x366/0x570 net/ipv4/tcp_input.c:2712
      Code: 74 08 48 89 ef e8 da 80 17 f9 48 8b 45 00 65 48 ff 80 80 03 00 00 48 83 c4 30 5b 41 5c 41 5d 41 5e 41 5f 5d c3 e8 aa b0 c5 f8 <0f> 0b e9 16 fe ff ff 48 8b 4c 24 08 80 e1 07 38 c1 0f 8c c7 fc ff
      RSP: 0018:ffffc900079e70f8 EFLAGS: 00010287
      RAX: ffffffff88c0f7f6 RBX: ffff8880756e7a80 RCX: 0000000000040000
      RDX: ffffc9000c6c4000 RSI: 0000000000031f9e RDI: 0000000000031f9f
      RBP: 0000000000000000 R08: ffffffff88c0f606 R09: ffffc900079e7520
      R10: ffffed101011226d R11: 1ffff1101011226c R12: 1ffff1100eadcf50
      R13: ffff8880756e72c0 R14: 1ffff1100eadcf89 R15: dffffc0000000000
      FS:  00007f643236e700(0000) GS:ffff8880b9b00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f1ab3f1e2a0 CR3: 0000000064fe7000 CR4: 00000000003506e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       <TASK>
       tcp_clean_rtx_queue+0x223a/0x2da0 net/ipv4/tcp_input.c:3356
       tcp_ack+0x1962/0x3c90 net/ipv4/tcp_input.c:3861
       tcp_rcv_established+0x7c8/0x1ac0 net/ipv4/tcp_input.c:5973
       tcp_v6_do_rcv+0x57b/0x1210 net/ipv6/tcp_ipv6.c:1476
       sk_backlog_rcv include/net/sock.h:1061 [inline]
       __release_sock+0x1d8/0x4c0 net/core/sock.c:2849
       release_sock+0x5d/0x1c0 net/core/sock.c:3404
       sk_stream_wait_memory+0x700/0xdc0 net/core/stream.c:145
       tcp_sendmsg_locked+0x111d/0x3fc0 net/ipv4/tcp.c:1410
       tcp_sendmsg+0x2c/0x40 net/ipv4/tcp.c:1448
       sock_sendmsg_nosec net/socket.c:714 [inline]
       sock_sendmsg net/socket.c:734 [inline]
       __sys_sendto+0x439/0x5c0 net/socket.c:2119
       __do_sys_sendto net/socket.c:2131 [inline]
       __se_sys_sendto net/socket.c:2127 [inline]
       __x64_sys_sendto+0xda/0xf0 net/socket.c:2127
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x2b/0x70 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x46/0xb0
      RIP: 0033:0x7f6431289109
      Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 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 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007f643236e168 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
      RAX: ffffffffffffffda RBX: 00007f643139c100 RCX: 00007f6431289109
      RDX: 00000000d0d0c2ac RSI: 0000000020000080 RDI: 000000000000000a
      RBP: 00007f64312e308d R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
      R13: 00007fff372533af R14: 00007f643236e300 R15: 0000000000022000
      
      Fixes: 5d424d5a ("[TCP]: MTU probing")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      11825765
    • Ke Liu's avatar
      net: phy: Directly use ida_alloc()/free() · 2f1de254
      Ke Liu authored
      Use ida_alloc()/ida_free() instead of deprecated
      ida_simple_get()/ida_simple_remove().
      Signed-off-by: default avatarKe Liu <liuke94@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2f1de254
    • Guangguan Wang's avatar
      net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to "struct smc_wr_tx_pend_priv *" · e225c9a5
      Guangguan Wang authored
      "struct smc_cdc_tx_pend **" can not directly convert
      to "struct smc_wr_tx_pend_priv *".
      
      Fixes: 2bced6ae ("net/smc: put slot when connection is killed")
      Signed-off-by: default avatarGuangguan Wang <guangguan.wang@linux.alibaba.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e225c9a5
    • Jakub Kicinski's avatar
      Merge branch 'net-ipa-fix-page-free-in-two-spots' · 9bae058a
      Jakub Kicinski authored
      Alex Elder says:
      
      ====================
      net: ipa: fix page free in two spots
      
      When a receive buffer is not wrapped in an SKB and passed to the
      network stack, the (compound) page gets freed within the IPA driver.
      This is currently quite rare.
      
      The pages are freed using __free_pages(), but they should instead be
      freed using page_put().  This series fixes this, in two spots.
      
      These patches work for the current linus/master branch, but won't
      apply cleanly to earlier stable branches.  (Nevertheless, the fix is
      a trivial substitution everwhere __free_pages() is called.)
      ====================
      
      Link: https://lore.kernel.org/r/20220526152314.1405629-1-elder@linaro.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      9bae058a
    • Alex Elder's avatar
      net: ipa: fix page free in ipa_endpoint_replenish_one() · 70132763
      Alex Elder authored
      Currently the (possibly compound) pages used for receive buffers are
      freed using __free_pages().  But according to this comment above the
      definition of that function, that's wrong:
          If you want to use the page's reference count to decide
          when to free the allocation, you should allocate a compound
          page, and use put_page() instead of __free_pages().
      
      Convert the call to __free_pages() in ipa_endpoint_replenish_one()
      to use put_page() instead.
      
      Fixes: 6a606b90 ("net: ipa: allocate transaction in replenish loop")
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      70132763
    • Alex Elder's avatar
      net: ipa: fix page free in ipa_endpoint_trans_release() · 155c0c90
      Alex Elder authored
      Currently the (possibly compound) page used for receive buffers are
      freed using __free_pages().  But according to this comment above the
      definition of that function, that's wrong:
          If you want to use the page's reference count to decide when
          to free the allocation, you should allocate a compound page,
          and use put_page() instead of __free_pages().
      
      Convert the call to __free_pages() in ipa_endpoint_trans_release()
      to use put_page() instead.
      
      Fixes: ed23f026 ("net: ipa: define per-endpoint receive buffer size")
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      155c0c90
    • Alexandru Tachici's avatar
    • Jakub Kicinski's avatar
      Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf · 6b51935a
      Jakub Kicinski authored
      Daniel Borkmann says:
      
      ====================
      pull-request: bpf 2022-05-28
      
      We've added 2 non-merge commits during the last 1 day(s) which contain
      a total of 2 files changed, 6 insertions(+), 10 deletions(-).
      
      The main changes are:
      
      1) Fix ldx_probe_mem instruction in interpreter by properly zero-extending
         the bpf_probe_read_kernel() read content, from Menglong Dong.
      
      2) Fix stacktrace_build_id BPF selftest given urandom_read has been renamed
         into urandom_read_iter in random driver, from Song Liu.
      
      * https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf:
        bpf: Fix probe read error in ___bpf_prog_run()
        selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read
      ====================
      
      Link: https://lore.kernel.org/r/20220527235042.8526-1-daniel@iogearbox.netSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6b51935a
  2. 27 May, 2022 15 commits
  3. 26 May, 2022 12 commits
  4. 25 May, 2022 5 commits
    • Linus Torvalds's avatar
      Merge tag 'net-next-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next · 7e062cda
      Linus Torvalds authored
      Pull networking updates from Jakub Kicinski:
       "Core
        ----
      
         - Support TCPv6 segmentation offload with super-segments larger than
           64k bytes using the IPv6 Jumbogram extension header (AKA BIG TCP).
      
         - Generalize skb freeing deferral to per-cpu lists, instead of
           per-socket lists.
      
         - Add a netdev statistic for packets dropped due to L2 address
           mismatch (rx_otherhost_dropped).
      
         - Continue work annotating skb drop reasons.
      
         - Accept alternative netdev names (ALT_IFNAME) in more netlink
           requests.
      
         - Add VLAN support for AF_PACKET SOCK_RAW GSO.
      
         - Allow receiving skb mark from the socket as a cmsg.
      
         - Enable memcg accounting for veth queues, sysctl tables and IPv6.
      
        BPF
        ---
      
         - Add libbpf support for User Statically-Defined Tracing (USDTs).
      
         - Speed up symbol resolution for kprobes multi-link attachments.
      
         - Support storing typed pointers to referenced and unreferenced
           objects in BPF maps.
      
         - Add support for BPF link iterator.
      
         - Introduce access to remote CPU map elements in BPF per-cpu map.
      
         - Allow middle-of-the-road settings for the
           kernel.unprivileged_bpf_disabled sysctl.
      
         - Implement basic types of dynamic pointers e.g. to allow for
           dynamically sized ringbuf reservations without extra memory copies.
      
        Protocols
        ---------
      
         - Retire port only listening_hash table, add a second bind table
           hashed by port and address. Avoid linear list walk when binding to
           very popular ports (e.g. 443).
      
         - Add bridge FDB bulk flush filtering support allowing user space to
           remove all FDB entries matching a condition.
      
         - Introduce accept_unsolicited_na sysctl for IPv6 to implement
           router-side changes for RFC9131.
      
         - Support for MPTCP path manager in user space.
      
         - Add MPTCP support for fallback to regular TCP for connections that
           have never connected additional subflows or transmitted
           out-of-sequence data (partial support for RFC8684 fallback).
      
         - Avoid races in MPTCP-level window tracking, stabilize and improve
           throughput.
      
         - Support lockless operation of GRE tunnels with seq numbers enabled.
      
         - WiFi support for host based BSS color collision detection.
      
         - Add support for SO_TXTIME/SCM_TXTIME on CAN sockets.
      
         - Support transmission w/o flow control in CAN ISOTP (ISO 15765-2).
      
         - Support zero-copy Tx with TLS 1.2 crypto offload (sendfile).
      
         - Allow matching on the number of VLAN tags via tc-flower.
      
         - Add tracepoint for tcp_set_ca_state().
      
        Driver API
        ----------
      
         - Improve error reporting from classifier and action offload.
      
         - Add support for listing line cards in switches (devlink).
      
         - Add helpers for reporting page pool statistics with ethtool -S.
      
         - Add support for reading clock cycles when using PTP virtual clocks,
           instead of having the driver convert to time before reporting. This
           makes it possible to report time from different vclocks.
      
         - Support configuring low-latency Tx descriptor push via ethtool.
      
         - Separate Clause 22 and Clause 45 MDIO accesses more explicitly.
      
        New hardware / drivers
        ----------------------
      
         - Ethernet:
            - Marvell's Octeon NIC PCI Endpoint support (octeon_ep)
            - Sunplus SP7021 SoC (sp7021_emac)
            - Add support for Renesas RZ/V2M (in ravb)
            - Add support for MediaTek mt7986 switches (in mtk_eth_soc)
      
         - Ethernet PHYs:
            - ADIN1100 industrial PHYs (w/ 10BASE-T1L and SQI reporting)
            - TI DP83TD510 PHY
            - Microchip LAN8742/LAN88xx PHYs
      
         - WiFi:
            - Driver for pureLiFi X, XL, XC devices (plfxlc)
            - Driver for Silicon Labs devices (wfx)
            - Support for WCN6750 (in ath11k)
            - Support Realtek 8852ce devices (in rtw89)
      
         - Mobile:
            - MediaTek T700 modems (Intel 5G 5000 M.2 cards)
      
         - CAN:
            - ctucanfd: add support for CTU CAN FD open-source IP core from
              Czech Technical University in Prague
      
        Drivers
        -------
      
         - Delete a number of old drivers still using virt_to_bus().
      
         - Ethernet NICs:
            - intel: support TSO on tunnels MPLS
            - broadcom: support multi-buffer XDP
            - nfp: support VF rate limiting
            - sfc: use hardware tx timestamps for more than PTP
            - mlx5: multi-port eswitch support
            - hyper-v: add support for XDP_REDIRECT
            - atlantic: XDP support (including multi-buffer)
            - macb: improve real-time perf by deferring Tx processing to NAPI
      
         - High-speed Ethernet switches:
            - mlxsw: implement basic line card information querying
            - prestera: add support for traffic policing on ingress and egress
      
         - Embedded Ethernet switches:
            - lan966x: add support for packet DMA (FDMA)
            - lan966x: add support for PTP programmable pins
            - ti: cpsw_new: enable bc/mc storm prevention
      
         - Qualcomm 802.11ax WiFi (ath11k):
            - Wake-on-WLAN support for QCA6390 and WCN6855
            - device recovery (firmware restart) support
            - support setting Specific Absorption Rate (SAR) for WCN6855
            - read country code from SMBIOS for WCN6855/QCA6390
            - enable keep-alive during WoWLAN suspend
            - implement remain-on-channel support
      
         - MediaTek WiFi (mt76):
            - support Wireless Ethernet Dispatch offloading packet movement
              between the Ethernet switch and WiFi interfaces
            - non-standard VHT MCS10-11 support
            - mt7921 AP mode support
            - mt7921 IPv6 NS offload support
      
         - Ethernet PHYs:
            - micrel: ksz9031/ksz9131: cabletest support
            - lan87xx: SQI support for T1 PHYs
            - lan937x: add interrupt support for link detection"
      
      * tag 'net-next-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1809 commits)
        ptp: ocp: Add firmware header checks
        ptp: ocp: fix PPS source selector debugfs reporting
        ptp: ocp: add .init function for sma_op vector
        ptp: ocp: vectorize the sma accessor functions
        ptp: ocp: constify selectors
        ptp: ocp: parameterize input/output sma selectors
        ptp: ocp: revise firmware display
        ptp: ocp: add Celestica timecard PCI ids
        ptp: ocp: Remove #ifdefs around PCI IDs
        ptp: ocp: 32-bit fixups for pci start address
        Revert "net/smc: fix listen processing for SMC-Rv2"
        ath6kl: Use cc-disable-warning to disable -Wdangling-pointer
        selftests/bpf: Dynptr tests
        bpf: Add dynptr data slices
        bpf: Add bpf_dynptr_read and bpf_dynptr_write
        bpf: Dynptr support for ring buffers
        bpf: Add bpf_dynptr_from_mem for local dynptrs
        bpf: Add verifier support for dynptrs
        bpf: Suppress 'passing zero to PTR_ERR' warning
        bpf: Introduce bpf_arch_text_invalidate for bpf_prog_pack
        ...
      7e062cda
    • Linus Torvalds's avatar
      Merge branch 'for-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 5d1772b1
      Linus Torvalds authored
      Pull workqueue update from Tejun Heo:
       "A lone commit fixing CPU offline handling for per-cpu wq workers so
        that they don't bother isolated CPUs"
      
      * 'for-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: Restrict kworker in the offline CPU pool running on housekeeping CPUs
      5d1772b1
    • Linus Torvalds's avatar
      Merge branch 'for-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 8b49c4b1
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
       "Nothing too interesting. This adds cpu controller selftests and there
        are a couple code cleanup patches"
      
      * 'for-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroup: remove the superfluous judgment
        cgroup: Make cgroup_debug static
        kseltest/cgroup: Make test_stress.sh work if run interactively
        kselftest/cgroup: fix test_stress.sh to use OUTPUT dir
        cgroup: Add config file to cgroup selftest suite
        cgroup: Add test_cpucg_max_nested() testcase
        cgroup: Add test_cpucg_max() testcase
        cgroup: Add test_cpucg_nested_weight_underprovisioned() testcase
        cgroup: Adding test_cpucg_nested_weight_overprovisioned() testcase
        cgroup: Add test_cpucg_weight_underprovisioned() testcase
        cgroup: Add test_cpucg_weight_overprovisioned() testcase
        cgroup: Add test_cpucg_stats() testcase to cgroup cpu selftests
        cgroup: Add new test_cpu.c test suite in cgroup selftests
      8b49c4b1
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-kunit-5.19-rc1' of... · 64e34b50
      Linus Torvalds authored
      Merge tag 'linux-kselftest-kunit-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull KUnit updates from Shuah Khan:
       "Several fixes, cleanups, and enhancements to tests and framework:
      
         - introduce _NULL and _NOT_NULL macros to pointer error checks
      
         - rework kunit_resource allocation policy to fix memory leaks when
           caller doesn't specify free() function to be used when allocating
           memory using kunit_add_resource() and kunit_alloc_resource() funcs.
      
         - add ability to specify suite-level init and exit functions"
      
      * tag 'linux-kselftest-kunit-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (41 commits)
        kunit: tool: Use qemu-system-i386 for i386 runs
        kunit: fix executor OOM error handling logic on non-UML
        kunit: tool: update riscv QEMU config with new serial dependency
        kcsan: test: use new suite_{init,exit} support
        kunit: tool: Add list of all valid test configs on UML
        kunit: take `kunit_assert` as `const`
        kunit: tool: misc cleanups
        kunit: tool: minor cosmetic cleanups in kunit_parser.py
        kunit: tool: make parser stop overwriting status of suites w/ no_tests
        kunit: tool: remove dead parse_crash_in_log() logic
        kunit: tool: print clearer error message when there's no TAP output
        kunit: tool: stop using a shell to run kernel under QEMU
        kunit: tool: update test counts summary line format
        kunit: bail out of test filtering logic quicker if OOM
        lib/Kconfig.debug: change KUnit tests to default to KUNIT_ALL_TESTS
        kunit: Rework kunit_resource allocation policy
        kunit: fix debugfs code to use enum kunit_status, not bool
        kfence: test: use new suite_{init/exit} support, add .kunitconfig
        kunit: add ability to specify suite-level init and exit functions
        kunit: rename print_subtest_{start,end} for clarity (s/subtest/suite)
        ...
      64e34b50
    • Linus Torvalds's avatar
      Merge tag 'linux-kselftest-next-5.19-rc1' of... · 1c6d2ead
      Linus Torvalds authored
      Merge tag 'linux-kselftest-next-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull Kselftest updates from Shuah Khan:
       "Several fixes, cleanups, and enhancements to tests:
      
         - add mips support for kprobe args string and syntax tests
      
         - updates to resctrl test to use kselftest framework
      
         - fixes, cleanups, and enhancements to tests"
      
      * tag 'linux-kselftest-next-5.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        kselftests/ir : Improve readability of modprobe error message
        selftests/resctrl: Fix null pointer dereference on open failed
        selftests/resctrl: Add missing SPDX license to Makefile
        selftests/resctrl: Update README about using kselftest framework to build/run resctrl_tests
        selftests/resctrl: Make resctrl_tests run using kselftest framework
        selftests/resctrl: Fix resctrl_tests' return code to work with selftest framework
        selftests/resctrl: Change the default limited time to 120 seconds
        selftests/resctrl: Kill child process before parent process terminates if SIGTERM is received
        selftests/resctrl: Print a message if the result of MBM&CMT tests is failed on Intel CPU
        selftests/resctrl: Extend CPU vendor detection
        selftests/x86/corrupt_xstate_header: Use provided __cpuid_count() macro
        selftests/x86/amx: Use provided __cpuid_count() macro
        selftests/vm/pkeys: Use provided __cpuid_count() macro
        selftests: Provide local define of __cpuid_count()
        selftests/damon: add damon to selftests root Makefile
        selftests/binderfs: Improve message to provide more info
        selftests: mqueue: drop duplicate min definition
        selftests/ftrace: add mips support for kprobe args syntax tests
        selftests/ftrace: add mips support for kprobe args string tests
      1c6d2ead