25 Aug, 2022

1 commit

  • commit 3f4093e2bf4673f218c0bf17d8362337c400e77b upstream.

    There are use-after-free bugs caused by tst_timer. The root cause
    is that there are no functions to stop tst_timer in idt77252_exit().
    One of the possible race conditions is shown below:

    (thread 1) | (thread 2)
    | idt77252_init_one
    | init_card
    | fill_tst
    | mod_timer(&card->tst_timer, ...)
    idt77252_exit | (wait a time)
    | tst_timer
    |
    | ...
    kfree(card) // FREE |
    | card->soft_tst[e] // USE

    The idt77252_dev is deallocated in idt77252_exit() and used in
    timer handler.

    This patch adds del_timer_sync() in idt77252_exit() in order that
    the timer handler could be stopped before the idt77252_dev is
    deallocated.

    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Duoming Zhou
    Link: https://lore.kernel.org/r/20220805070008.18007-1-duoming@zju.edu.cn
    Signed-off-by: Jakub Kicinski
    Signed-off-by: Greg Kroah-Hartman

    Duoming Zhou
     

23 Mar, 2022

1 commit

  • [ Upstream commit 0f74b29a4f53627376cf5a5fb7b0b3fa748a0b2b ]

    As the potential failure of the dma_map_single(),
    it should be better to check it and return error
    if fails.

    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Jiasheng Jiang
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin

    Jiasheng Jiang
     

19 Mar, 2022

1 commit


08 Aug, 2021

1 commit


20 Jul, 2021

1 commit


01 Jul, 2021

1 commit

  • Pull networking updates from Jakub Kicinski:
    "Core:

    - BPF:
    - add syscall program type and libbpf support for generating
    instructions and bindings for in-kernel BPF loaders (BPF loaders
    for BPF), this is a stepping stone for signed BPF programs
    - infrastructure to migrate TCP child sockets from one listener to
    another in the same reuseport group/map to improve flexibility
    of service hand-off/restart
    - add broadcast support to XDP redirect

    - allow bypass of the lockless qdisc to improving performance (for
    pktgen: +23% with one thread, +44% with 2 threads)

    - add a simpler version of "DO_ONCE()" which does not require jump
    labels, intended for slow-path usage

    - virtio/vsock: introduce SOCK_SEQPACKET support

    - add getsocketopt to retrieve netns cookie

    - ip: treat lowest address of a IPv4 subnet as ordinary unicast
    address allowing reclaiming of precious IPv4 addresses

    - ipv6: use prandom_u32() for ID generation

    - ip: add support for more flexible field selection for hashing
    across multi-path routes (w/ offload to mlxsw)

    - icmp: add support for extended RFC 8335 PROBE (ping)

    - seg6: add support for SRv6 End.DT46 behavior

    - mptcp:
    - DSS checksum support (RFC 8684) to detect middlebox meddling
    - support Connection-time 'C' flag
    - time stamping support

    - sctp: packetization Layer Path MTU Discovery (RFC 8899)

    - xfrm: speed up state addition with seq set

    - WiFi:
    - hidden AP discovery on 6 GHz and other HE 6 GHz improvements
    - aggregation handling improvements for some drivers
    - minstrel improvements for no-ack frames
    - deferred rate control for TXQs to improve reaction times
    - switch from round robin to virtual time-based airtime scheduler

    - add trace points:
    - tcp checksum errors
    - openvswitch - action execution, upcalls
    - socket errors via sk_error_report

    Device APIs:

    - devlink: add rate API for hierarchical control of max egress rate
    of virtual devices (VFs, SFs etc.)

    - don't require RCU read lock to be held around BPF hooks in NAPI
    context

    - page_pool: generic buffer recycling

    New hardware/drivers:

    - mobile:
    - iosm: PCIe Driver for Intel M.2 Modem
    - support for Qualcomm MSM8998 (ipa)

    - WiFi: Qualcomm QCN9074 and WCN6855 PCI devices

    - sparx5: Microchip SparX-5 family of Enterprise Ethernet switches

    - Mellanox BlueField Gigabit Ethernet (control NIC of the DPU)

    - NXP SJA1110 Automotive Ethernet 10-port switch

    - Qualcomm QCA8327 switch support (qca8k)

    - Mikrotik 10/25G NIC (atl1c)

    Driver changes:

    - ACPI support for some MDIO, MAC and PHY devices from Marvell and
    NXP (our first foray into MAC/PHY description via ACPI)

    - HW timestamping (PTP) support: bnxt_en, ice, sja1105, hns3, tja11xx

    - Mellanox/Nvidia NIC (mlx5)
    - NIC VF offload of L2 bridging
    - support IRQ distribution to Sub-functions

    - Marvell (prestera):
    - add flower and match all
    - devlink trap
    - link aggregation

    - Netronome (nfp): connection tracking offload

    - Intel 1GE (igc): add AF_XDP support

    - Marvell DPU (octeontx2): ingress ratelimit offload

    - Google vNIC (gve): new ring/descriptor format support

    - Qualcomm mobile (rmnet & ipa): inline checksum offload support

    - MediaTek WiFi (mt76)
    - mt7915 MSI support
    - mt7915 Tx status reporting
    - mt7915 thermal sensors support
    - mt7921 decapsulation offload
    - mt7921 enable runtime pm and deep sleep

    - Realtek WiFi (rtw88)
    - beacon filter support
    - Tx antenna path diversity support
    - firmware crash information via devcoredump

    - Qualcomm WiFi (wcn36xx)
    - Wake-on-WLAN support with magic packets and GTK rekeying

    - Micrel PHY (ksz886x/ksz8081): add cable test support"

    * tag 'net-next-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2168 commits)
    tcp: change ICSK_CA_PRIV_SIZE definition
    tcp_yeah: check struct yeah size at compile time
    gve: DQO: Fix off by one in gve_rx_dqo()
    stmmac: intel: set PCI_D3hot in suspend
    stmmac: intel: Enable PHY WOL option in EHL
    net: stmmac: option to enable PHY WOL with PMT enabled
    net: say "local" instead of "static" addresses in ndo_dflt_fdb_{add,del}
    net: use netdev_info in ndo_dflt_fdb_{add,del}
    ptp: Set lookup cookie when creating a PTP PPS source.
    net: sock: add trace for socket errors
    net: sock: introduce sk_error_report
    net: dsa: replay the local bridge FDB entries pointing to the bridge dev too
    net: dsa: ensure during dsa_fdb_offload_notify that dev_hold and dev_put are on the same dev
    net: dsa: include fdb entries pointing to bridge in the host fdb list
    net: dsa: include bridge addresses which are local in the host fdb list
    net: dsa: sync static FDB entries on foreign interfaces to hardware
    net: dsa: install the host MDB and FDB entries in the master's RX filter
    net: dsa: reference count the FDB addresses at the cross-chip notifier level
    net: dsa: introduce a separate cross-chip notifier type for host FDBs
    net: dsa: reference count the MDB entries at the cross-chip notifier level
    ...

    Linus Torvalds
     

30 Jun, 2021

1 commit


22 Jun, 2021

2 commits

  • Because the error handling is sequential, the application of resources
    should be carried out in the order of error handling, so the operation
    of registering the interrupt handler should be put in front, so as not
    to free the unregistered interrupt handler during error handling.

    This log reveals it:

    [ 3.438724] Trying to free already-free IRQ 23
    [ 3.439060] WARNING: CPU: 5 PID: 1 at kernel/irq/manage.c:1825 free_irq+0xfb/0x480
    [ 3.440039] Modules linked in:
    [ 3.440257] CPU: 5 PID: 1 Comm: swapper/0 Not tainted 5.12.4-g70e7f0549188-dirty #142
    [ 3.440793] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [ 3.441561] RIP: 0010:free_irq+0xfb/0x480
    [ 3.441845] Code: 6e 08 74 6f 4d 89 f4 e8 c3 78 09 00 4d 8b 74 24 18 4d 85 f6 75 e3 e8 b4 78 09 00 8b 75 c8 48 c7 c7 a0 ac d5 85 e8 95 d7 f5 ff 0b 48 8b 75 c0 4c 89 ff e8 87 c5 90 03 48 8b 43 40 4c 8b a0 80
    [ 3.443121] RSP: 0000:ffffc90000017b50 EFLAGS: 00010086
    [ 3.443483] RAX: 0000000000000000 RBX: ffff888107c6f000 RCX: 0000000000000000
    [ 3.443972] RDX: 0000000000000000 RSI: ffffffff8123f301 RDI: 00000000ffffffff
    [ 3.444462] RBP: ffffc90000017b90 R08: 0000000000000001 R09: 0000000000000003
    [ 3.444950] R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000
    [ 3.444994] R13: ffff888107dc0000 R14: ffff888104f6bf00 R15: ffff888107c6f0a8
    [ 3.444994] FS: 0000000000000000(0000) GS:ffff88817bd40000(0000) knlGS:0000000000000000
    [ 3.444994] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 3.444994] CR2: 0000000000000000 CR3: 000000000642e000 CR4: 00000000000006e0
    [ 3.444994] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 3.444994] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 3.444994] Call Trace:
    [ 3.444994] ns_init_card_error+0x18e/0x250
    [ 3.444994] nicstar_init_one+0x10d2/0x1130
    [ 3.444994] local_pci_probe+0x4a/0xb0
    [ 3.444994] pci_device_probe+0x126/0x1d0
    [ 3.444994] ? pci_device_remove+0x100/0x100
    [ 3.444994] really_probe+0x27e/0x650
    [ 3.444994] driver_probe_device+0x84/0x1d0
    [ 3.444994] ? mutex_lock_nested+0x16/0x20
    [ 3.444994] device_driver_attach+0x63/0x70
    [ 3.444994] __driver_attach+0x117/0x1a0
    [ 3.444994] ? device_driver_attach+0x70/0x70
    [ 3.444994] bus_for_each_dev+0xb6/0x110
    [ 3.444994] ? rdinit_setup+0x40/0x40
    [ 3.444994] driver_attach+0x22/0x30
    [ 3.444994] bus_add_driver+0x1e6/0x2a0
    [ 3.444994] driver_register+0xa4/0x180
    [ 3.444994] __pci_register_driver+0x77/0x80
    [ 3.444994] ? uPD98402_module_init+0xd/0xd
    [ 3.444994] nicstar_init+0x1f/0x75
    [ 3.444994] do_one_initcall+0x7a/0x3d0
    [ 3.444994] ? rdinit_setup+0x40/0x40
    [ 3.444994] ? rcu_read_lock_sched_held+0x4a/0x70
    [ 3.444994] kernel_init_freeable+0x2a7/0x2f9
    [ 3.444994] ? rest_init+0x2c0/0x2c0
    [ 3.444994] kernel_init+0x13/0x180
    [ 3.444994] ? rest_init+0x2c0/0x2c0
    [ 3.444994] ? rest_init+0x2c0/0x2c0
    [ 3.444994] ret_from_fork+0x1f/0x30
    [ 3.444994] Kernel panic - not syncing: panic_on_warn set ...
    [ 3.444994] CPU: 5 PID: 1 Comm: swapper/0 Not tainted 5.12.4-g70e7f0549188-dirty #142
    [ 3.444994] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [ 3.444994] Call Trace:
    [ 3.444994] dump_stack+0xba/0xf5
    [ 3.444994] ? free_irq+0xfb/0x480
    [ 3.444994] panic+0x155/0x3ed
    [ 3.444994] ? __warn+0xed/0x150
    [ 3.444994] ? free_irq+0xfb/0x480
    [ 3.444994] __warn+0x103/0x150
    [ 3.444994] ? free_irq+0xfb/0x480
    [ 3.444994] report_bug+0x119/0x1c0
    [ 3.444994] handle_bug+0x3b/0x80
    [ 3.444994] exc_invalid_op+0x18/0x70
    [ 3.444994] asm_exc_invalid_op+0x12/0x20
    [ 3.444994] RIP: 0010:free_irq+0xfb/0x480
    [ 3.444994] Code: 6e 08 74 6f 4d 89 f4 e8 c3 78 09 00 4d 8b 74 24 18 4d 85 f6 75 e3 e8 b4 78 09 00 8b 75 c8 48 c7 c7 a0 ac d5 85 e8 95 d7 f5 ff 0b 48 8b 75 c0 4c 89 ff e8 87 c5 90 03 48 8b 43 40 4c 8b a0 80
    [ 3.444994] RSP: 0000:ffffc90000017b50 EFLAGS: 00010086
    [ 3.444994] RAX: 0000000000000000 RBX: ffff888107c6f000 RCX: 0000000000000000
    [ 3.444994] RDX: 0000000000000000 RSI: ffffffff8123f301 RDI: 00000000ffffffff
    [ 3.444994] RBP: ffffc90000017b90 R08: 0000000000000001 R09: 0000000000000003
    [ 3.444994] R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000
    [ 3.444994] R13: ffff888107dc0000 R14: ffff888104f6bf00 R15: ffff888107c6f0a8
    [ 3.444994] ? vprintk_func+0x71/0x110
    [ 3.444994] ns_init_card_error+0x18e/0x250
    [ 3.444994] nicstar_init_one+0x10d2/0x1130
    [ 3.444994] local_pci_probe+0x4a/0xb0
    [ 3.444994] pci_device_probe+0x126/0x1d0
    [ 3.444994] ? pci_device_remove+0x100/0x100
    [ 3.444994] really_probe+0x27e/0x650
    [ 3.444994] driver_probe_device+0x84/0x1d0
    [ 3.444994] ? mutex_lock_nested+0x16/0x20
    [ 3.444994] device_driver_attach+0x63/0x70
    [ 3.444994] __driver_attach+0x117/0x1a0
    [ 3.444994] ? device_driver_attach+0x70/0x70
    [ 3.444994] bus_for_each_dev+0xb6/0x110
    [ 3.444994] ? rdinit_setup+0x40/0x40
    [ 3.444994] driver_attach+0x22/0x30
    [ 3.444994] bus_add_driver+0x1e6/0x2a0
    [ 3.444994] driver_register+0xa4/0x180
    [ 3.444994] __pci_register_driver+0x77/0x80
    [ 3.444994] ? uPD98402_module_init+0xd/0xd
    [ 3.444994] nicstar_init+0x1f/0x75
    [ 3.444994] do_one_initcall+0x7a/0x3d0
    [ 3.444994] ? rdinit_setup+0x40/0x40
    [ 3.444994] ? rcu_read_lock_sched_held+0x4a/0x70
    [ 3.444994] kernel_init_freeable+0x2a7/0x2f9
    [ 3.444994] ? rest_init+0x2c0/0x2c0
    [ 3.444994] kernel_init+0x13/0x180
    [ 3.444994] ? rest_init+0x2c0/0x2c0
    [ 3.444994] ? rest_init+0x2c0/0x2c0
    [ 3.444994] ret_from_fork+0x1f/0x30
    [ 3.444994] Dumping ftrace buffer:
    [ 3.444994] (ftrace buffer empty)
    [ 3.444994] Kernel Offset: disabled
    [ 3.444994] Rebooting in 1 seconds..

    Signed-off-by: Zheyu Ma
    Signed-off-by: David S. Miller

    Zheyu Ma
     
  • When 'nicstar_init_one' fails, 'ns_init_card_error' will be executed for
    error handling, but the correct memory free function should be used,
    otherwise it will cause an error. Since 'card->rsq.org' and
    'card->tsq.org' are allocated using 'dma_alloc_coherent' function, they
    should be freed using 'dma_free_coherent'.

    Fix this by using 'dma_free_coherent' instead of 'kfree'

    This log reveals it:

    [ 3.440294] kernel BUG at mm/slub.c:4206!
    [ 3.441059] invalid opcode: 0000 [#1] PREEMPT SMP PTI
    [ 3.441430] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 5.12.4-g70e7f0549188-dirty #141
    [ 3.441986] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
    [ 3.442780] RIP: 0010:kfree+0x26a/0x300
    [ 3.443065] Code: e8 3a c3 b9 ff e9 d6 fd ff ff 49 8b 45 00 31 db a9 00 00 01 00 75 4d 49 8b 45 00 a9 00 00 01 00 75 0a 49 8b 45 08 a8 01 75 02 0b 89 d9 b8 00 10 00 00 be 06 00 00 00 48 d3 e0 f7 d8 48 63 d0
    [ 3.443396] RSP: 0000:ffffc90000017b70 EFLAGS: 00010246
    [ 3.443396] RAX: dead000000000100 RBX: 0000000000000000 RCX: 0000000000000000
    [ 3.443396] RDX: 0000000000000000 RSI: ffffffff85d3df94 RDI: ffffffff85df38e6
    [ 3.443396] RBP: ffffc90000017b90 R08: 0000000000000001 R09: 0000000000000001
    [ 3.443396] R10: 0000000000000000 R11: 0000000000000001 R12: ffff888107dc0000
    [ 3.443396] R13: ffffea00001f0100 R14: ffff888101a8bf00 R15: ffff888107dc0160
    [ 3.443396] FS: 0000000000000000(0000) GS:ffff88817bc80000(0000) knlGS:0000000000000000
    [ 3.443396] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 3.443396] CR2: 0000000000000000 CR3: 000000000642e000 CR4: 00000000000006e0
    [ 3.443396] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 3.443396] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 3.443396] Call Trace:
    [ 3.443396] ns_init_card_error+0x12c/0x220
    [ 3.443396] nicstar_init_one+0x10d2/0x1130
    [ 3.443396] local_pci_probe+0x4a/0xb0
    [ 3.443396] pci_device_probe+0x126/0x1d0
    [ 3.443396] ? pci_device_remove+0x100/0x100
    [ 3.443396] really_probe+0x27e/0x650
    [ 3.443396] driver_probe_device+0x84/0x1d0
    [ 3.443396] ? mutex_lock_nested+0x16/0x20
    [ 3.443396] device_driver_attach+0x63/0x70
    [ 3.443396] __driver_attach+0x117/0x1a0
    [ 3.443396] ? device_driver_attach+0x70/0x70
    [ 3.443396] bus_for_each_dev+0xb6/0x110
    [ 3.443396] ? rdinit_setup+0x40/0x40
    [ 3.443396] driver_attach+0x22/0x30
    [ 3.443396] bus_add_driver+0x1e6/0x2a0
    [ 3.443396] driver_register+0xa4/0x180
    [ 3.443396] __pci_register_driver+0x77/0x80
    [ 3.443396] ? uPD98402_module_init+0xd/0xd
    [ 3.443396] nicstar_init+0x1f/0x75
    [ 3.443396] do_one_initcall+0x7a/0x3d0
    [ 3.443396] ? rdinit_setup+0x40/0x40
    [ 3.443396] ? rcu_read_lock_sched_held+0x4a/0x70
    [ 3.443396] kernel_init_freeable+0x2a7/0x2f9
    [ 3.443396] ? rest_init+0x2c0/0x2c0
    [ 3.443396] kernel_init+0x13/0x180
    [ 3.443396] ? rest_init+0x2c0/0x2c0
    [ 3.443396] ? rest_init+0x2c0/0x2c0
    [ 3.443396] ret_from_fork+0x1f/0x30
    [ 3.443396] Modules linked in:
    [ 3.443396] Dumping ftrace buffer:
    [ 3.443396] (ftrace buffer empty)
    [ 3.458593] ---[ end trace 3c6f8f0d8ef59bcd ]---
    [ 3.458922] RIP: 0010:kfree+0x26a/0x300
    [ 3.459198] Code: e8 3a c3 b9 ff e9 d6 fd ff ff 49 8b 45 00 31 db a9 00 00 01 00 75 4d 49 8b 45 00 a9 00 00 01 00 75 0a 49 8b 45 08 a8 01 75 02 0b 89 d9 b8 00 10 00 00 be 06 00 00 00 48 d3 e0 f7 d8 48 63 d0
    [ 3.460499] RSP: 0000:ffffc90000017b70 EFLAGS: 00010246
    [ 3.460870] RAX: dead000000000100 RBX: 0000000000000000 RCX: 0000000000000000
    [ 3.461371] RDX: 0000000000000000 RSI: ffffffff85d3df94 RDI: ffffffff85df38e6
    [ 3.461873] RBP: ffffc90000017b90 R08: 0000000000000001 R09: 0000000000000001
    [ 3.462372] R10: 0000000000000000 R11: 0000000000000001 R12: ffff888107dc0000
    [ 3.462871] R13: ffffea00001f0100 R14: ffff888101a8bf00 R15: ffff888107dc0160
    [ 3.463368] FS: 0000000000000000(0000) GS:ffff88817bc80000(0000) knlGS:0000000000000000
    [ 3.463949] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 3.464356] CR2: 0000000000000000 CR3: 000000000642e000 CR4: 00000000000006e0
    [ 3.464856] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 3.465356] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 3.465860] Kernel panic - not syncing: Fatal exception
    [ 3.466370] Dumping ftrace buffer:
    [ 3.466616] (ftrace buffer empty)
    [ 3.466871] Kernel Offset: disabled
    [ 3.467122] Rebooting in 1 seconds..

    Signed-off-by: Zheyu Ma
    Signed-off-by: David S. Miller

    Zheyu Ma
     

22 May, 2021

1 commit


18 May, 2021

1 commit


13 May, 2021

1 commit

  • This module's remove path calls del_timer(). However, that function
    does not wait until the timer handler finishes. This means that the
    timer handler may still be running after the driver's remove function
    has finished, which would result in a use-after-free.

    Fix by calling del_timer_sync(), which makes sure the timer handler
    has finished, and unable to re-schedule itself.

    Reported-by: Hulk Robot
    Signed-off-by: Zou Wei
    Signed-off-by: David S. Miller

    Zou Wei
     

12 May, 2021

1 commit

  • This module's remove path calls del_timer(). However, that function
    does not wait until the timer handler finishes. This means that the
    timer handler may still be running after the driver's remove function
    has finished, which would result in a use-after-free.

    Fix by calling del_timer_sync(), which makes sure the timer handler
    has finished, and unable to re-schedule itself.

    Reported-by: Hulk Robot
    Signed-off-by: Zou Wei
    Signed-off-by: David S. Miller

    Zou Wei
     

11 May, 2021

1 commit

  • Custom isprint() definition may collide with one form ctype.h.
    In order to avoid this, replace it with a functional analogue
    which is isascii() && isprint() in this case.

    First appearance of the code is in the commit 636b38438001
    ("Import 2.3.43").

    Reported-by: kernel test robot
    Signed-off-by: Andy Shevchenko
    Signed-off-by: David S. Miller

    Andy Shevchenko
     

08 May, 2021

1 commit

  • Add pseudo-keyword macro fallthrough[1]

    [1] https://www.kernel.org/doc/html/latest/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Wei Ming Chen
    Link: https://lore.kernel.org/r/20210507123843.10602-1-jj251510319013@gmail.com
    Signed-off-by: Jakub Kicinski

    Wei Ming Chen
     

30 Apr, 2021

1 commit

  • Pull networking updates from Jakub Kicinski:
    "Core:

    - bpf:
    - allow bpf programs calling kernel functions (initially to
    reuse TCP congestion control implementations)
    - enable task local storage for tracing programs - remove the
    need to store per-task state in hash maps, and allow tracing
    programs access to task local storage previously added for
    BPF_LSM
    - add bpf_for_each_map_elem() helper, allowing programs to walk
    all map elements in a more robust and easier to verify fashion
    - sockmap: support UDP and cross-protocol BPF_SK_SKB_VERDICT
    redirection
    - lpm: add support for batched ops in LPM trie
    - add BTF_KIND_FLOAT support - mostly to allow use of BTF on
    s390 which has floats in its headers files
    - improve BPF syscall documentation and extend the use of kdoc
    parsing scripts we already employ for bpf-helpers
    - libbpf, bpftool: support static linking of BPF ELF files
    - improve support for encapsulation of L2 packets

    - xdp: restructure redirect actions to avoid a runtime lookup,
    improving performance by 4-8% in microbenchmarks

    - xsk: build skb by page (aka generic zerocopy xmit) - improve
    performance of software AF_XDP path by 33% for devices which don't
    need headers in the linear skb part (e.g. virtio)

    - nexthop: resilient next-hop groups - improve path stability on
    next-hops group changes (incl. offload for mlxsw)

    - ipv6: segment routing: add support for IPv4 decapsulation

    - icmp: add support for RFC 8335 extended PROBE messages

    - inet: use bigger hash table for IP ID generation

    - tcp: deal better with delayed TX completions - make sure we don't
    give up on fast TCP retransmissions only because driver is slow in
    reporting that it completed transmitting the original

    - tcp: reorder tcp_congestion_ops for better cache locality

    - mptcp:
    - add sockopt support for common TCP options
    - add support for common TCP msg flags
    - include multiple address ids in RM_ADDR
    - add reset option support for resetting one subflow

    - udp: GRO L4 improvements - improve 'forward' / 'frag_list'
    co-existence with UDP tunnel GRO, allowing the first to take place
    correctly even for encapsulated UDP traffic

    - micro-optimize dev_gro_receive() and flow dissection, avoid
    retpoline overhead on VLAN and TEB GRO

    - use less memory for sysctls, add a new sysctl type, to allow using
    u8 instead of "int" and "long" and shrink networking sysctls

    - veth: allow GRO without XDP - this allows aggregating UDP packets
    before handing them off to routing, bridge, OvS, etc.

    - allow specifing ifindex when device is moved to another namespace

    - netfilter:
    - nft_socket: add support for cgroupsv2
    - nftables: add catch-all set element - special element used to
    define a default action in case normal lookup missed
    - use net_generic infra in many modules to avoid allocating
    per-ns memory unnecessarily

    - xps: improve the xps handling to avoid potential out-of-bound
    accesses and use-after-free when XPS change race with other
    re-configuration under traffic

    - add a config knob to turn off per-cpu netdev refcnt to catch
    underflows in testing

    Device APIs:

    - add WWAN subsystem to organize the WWAN interfaces better and
    hopefully start driving towards more unified and vendor-
    independent APIs

    - ethtool:
    - add interface for reading IEEE MIB stats (incl. mlx5 and bnxt
    support)
    - allow network drivers to dump arbitrary SFP EEPROM data,
    current offset+length API was a poor fit for modern SFP which
    define EEPROM in terms of pages (incl. mlx5 support)

    - act_police, flow_offload: add support for packet-per-second
    policing (incl. offload for nfp)

    - psample: add additional metadata attributes like transit delay for
    packets sampled from switch HW (and corresponding egress and
    policy-based sampling in the mlxsw driver)

    - dsa: improve support for sandwiched LAGs with bridge and DSA

    - netfilter:
    - flowtable: use direct xmit in topologies with IP forwarding,
    bridging, vlans etc.
    - nftables: counter hardware offload support

    - Bluetooth:
    - improvements for firmware download w/ Intel devices
    - add support for reading AOSP vendor capabilities
    - add support for virtio transport driver

    - mac80211:
    - allow concurrent monitor iface and ethernet rx decap
    - set priority and queue mapping for injected frames

    - phy: add support for Clause-45 PHY Loopback

    - pci/iov: add sysfs MSI-X vector assignment interface to distribute
    MSI-X resources to VFs (incl. mlx5 support)

    New hardware/drivers:

    - dsa: mv88e6xxx: add support for Marvell mv88e6393x - 11-port
    Ethernet switch with 8x 1-Gigabit Ethernet and 3x 10-Gigabit
    interfaces.

    - dsa: support for legacy Broadcom tags used on BCM5325, BCM5365 and
    BCM63xx switches

    - Microchip KSZ8863 and KSZ8873; 3x 10/100Mbps Ethernet switches

    - ath11k: support for QCN9074 a 802.11ax device

    - Bluetooth: Broadcom BCM4330 and BMC4334

    - phy: Marvell 88X2222 transceiver support

    - mdio: add BCM6368 MDIO mux bus controller

    - r8152: support RTL8153 and RTL8156 (USB Ethernet) chips

    - mana: driver for Microsoft Azure Network Adapter (MANA)

    - Actions Semi Owl Ethernet MAC

    - can: driver for ETAS ES58X CAN/USB interfaces

    Pure driver changes:

    - add XDP support to: enetc, igc, stmmac

    - add AF_XDP support to: stmmac

    - virtio:
    - page_to_skb() use build_skb when there's sufficient tailroom
    (21% improvement for 1000B UDP frames)
    - support XDP even without dedicated Tx queues - share the Tx
    queues with the stack when necessary

    - mlx5:
    - flow rules: add support for mirroring with conntrack, matching
    on ICMP, GTP, flex filters and more
    - support packet sampling with flow offloads
    - persist uplink representor netdev across eswitch mode changes
    - allow coexistence of CQE compression and HW time-stamping
    - add ethtool extended link error state reporting

    - ice, iavf: support flow filters, UDP Segmentation Offload

    - dpaa2-switch:
    - move the driver out of staging
    - add spanning tree (STP) support
    - add rx copybreak support
    - add tc flower hardware offload on ingress traffic

    - ionic:
    - implement Rx page reuse
    - support HW PTP time-stamping

    - octeon: support TC hardware offloads - flower matching on ingress
    and egress ratelimitting.

    - stmmac:
    - add RX frame steering based on VLAN priority in tc flower
    - support frame preemption (FPE)
    - intel: add cross time-stamping freq difference adjustment

    - ocelot:
    - support forwarding of MRP frames in HW
    - support multiple bridges
    - support PTP Sync one-step timestamping

    - dsa: mv88e6xxx, dpaa2-switch: offload bridge port flags like
    learning, flooding etc.

    - ipa: add IPA v4.5, v4.9 and v4.11 support (Qualcomm SDX55, SM8350,
    SC7280 SoCs)

    - mt7601u: enable TDLS support

    - mt76:
    - add support for 802.3 rx frames (mt7915/mt7615)
    - mt7915 flash pre-calibration support
    - mt7921/mt7663 runtime power management fixes"

    * tag 'net-next-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2451 commits)
    net: selftest: fix build issue if INET is disabled
    net: netrom: nr_in: Remove redundant assignment to ns
    net: tun: Remove redundant assignment to ret
    net: phy: marvell: add downshift support for M88E1240
    net: dsa: ksz: Make reg_mib_cnt a u8 as it never exceeds 255
    net/sched: act_ct: Remove redundant ct get and check
    icmp: standardize naming of RFC 8335 PROBE constants
    bpf, selftests: Update array map tests for per-cpu batched ops
    bpf: Add batched ops support for percpu array
    bpf: Implement formatted output helpers with bstr_printf
    seq_file: Add a seq_bprintf function
    sfc: adjust efx->xdp_tx_queue_count with the real number of initialized queues
    net:nfc:digital: Fix a double free in digital_tg_recv_dep_req
    net: fix a concurrency bug in l2tp_tunnel_register()
    net/smc: Remove redundant assignment to rc
    mpls: Remove redundant assignment to err
    llc2: Remove redundant assignment to rc
    net/tls: Remove redundant initialization of record
    rds: Remove redundant assignment to nr_sig
    dt-bindings: net: mdio-gpio: add compatible for microchip,mdio-smi0
    ...

    Linus Torvalds
     

27 Apr, 2021

1 commit

  • Pull irq updates from Thomas Gleixner:
    "The usual updates from the irq departement:

    Core changes:

    - Provide IRQF_NO_AUTOEN as a flag for request*_irq() so drivers can
    be cleaned up which either use a seperate mechanism to prevent
    auto-enable at request time or have a racy mechanism which disables
    the interrupt right after request.

    - Get rid of the last usage of irq_create_identity_mapping() and
    remove the interface.

    - An overhaul of tasklet_disable().

    Most usage sites of tasklet_disable() are in task context and
    usually in cleanup, teardown code pathes. tasklet_disable()
    spinwaits for a tasklet which is currently executed. That's not
    only a problem for PREEMPT_RT where this can lead to a live lock
    when the disabling task preempts the softirq thread. It's also
    problematic in context of virtualization when the vCPU which runs
    the tasklet is scheduled out and the disabling code has to spin
    wait until it's scheduled back in.

    There are a few code pathes which invoke tasklet_disable() from
    non-sleepable context. For these a new disable variant which still
    spinwaits is provided which allows to switch tasklet_disable() to a
    sleep wait mechanism. For the atomic use cases this does not solve
    the live lock issue on PREEMPT_RT. That is mitigated by blocking on
    the RT specific softirq lock.

    - The PREEMPT_RT specific implementation of softirq processing and
    local_bh_disable/enable().

    On RT enabled kernels soft interrupt processing happens always in
    task context and all interrupt handlers, which are not explicitly
    marked to be invoked in hard interrupt context are forced into task
    context as well. This allows to protect against softirq processing
    with a per CPU lock, which in turn allows to make BH disabled
    regions preemptible.

    Most of the softirq handling code is still shared. The RT/non-RT
    specific differences are addressed with a set of inline functions
    which provide the context specific functionality. The
    local_bh_disable() / local_bh_enable() mechanism are obviously
    seperate.

    - The usual set of small improvements and cleanups

    Driver changes:

    - New drivers for Nuvoton WPCM450 and DT 79rc3243x interrupt
    controllers

    - Extended functionality for MStar, STM32 and SC7280 irq chips

    - Enhanced robustness for ARM GICv3/4.1 drivers

    - The usual set of cleanups and improvements all over the place"

    * tag 'irq-core-2021-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
    irqchip/xilinx: Expose Kconfig option for Zynq/ZynqMP
    irqchip/gic-v3: Do not enable irqs when handling spurious interrups
    dt-bindings: interrupt-controller: Add IDT 79RC3243x Interrupt Controller
    irqchip: Add support for IDT 79rc3243x interrupt controller
    irqdomain: Drop references to recusive irqdomain setup
    irqdomain: Get rid of irq_create_strict_mappings()
    irqchip/jcore-aic: Kill use of irq_create_strict_mappings()
    ARM: PXA: Kill use of irq_create_strict_mappings()
    irqchip/gic-v4.1: Disable vSGI upon (GIC CPUIF < v4.1) detection
    irqchip/tb10x: Use 'fallthrough' to eliminate a warning
    genirq: Reduce irqdebug cacheline bouncing
    kernel: Initialize cpumask before parsing
    irqchip/wpcm450: Drop COMPILE_TEST
    irqchip/irq-mst: Support polarity configuration
    irqchip: Add driver for WPCM450 interrupt controller
    dt-bindings: interrupt-controller: Add nuvoton, wpcm450-aic
    dt-bindings: qcom,pdc: Add compatible for sc7280
    irqchip/stm32: Add usart instances exti direct event support
    irqchip/gic-v3: Fix OF_BAD_ADDR error handling
    irqchip/sifive-plic: Mark two global variables __ro_after_init
    ...

    Linus Torvalds
     

24 Apr, 2021

1 commit


15 Apr, 2021

1 commit


26 Mar, 2021

1 commit


18 Mar, 2021

1 commit


17 Mar, 2021

1 commit

  • The atmdev_ops::send callback which calls tasklet_disable() is invoked with
    bottom halfs disabled from net_device_ops::ndo_start_xmit(). All other
    invocations of tasklet_disable() in this driver happen in preemptible
    context.

    Change the send() call to use tasklet_disable_in_atomic() which allows
    tasklet_disable() to be made sleepable once the remaining atomic context
    usage sites are cleaned up.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Thomas Gleixner
    Acked-by: Peter Zijlstra (Intel)
    Link: https://lore.kernel.org/r/20210309084242.415583839@linutronix.de

    Sebastian Andrzej Siewior
     

16 Mar, 2021

1 commit


09 Mar, 2021

2 commits

  • this one is similar to the phy_data allocation fix in uPD98402, the
    driver allocate the idt77105_priv and store to dev_data but later
    dereference using dev->dev_data, which will cause null-ptr-dereference.

    fix this issue by changing dev_data to phy_data so that PRIV(dev) can
    work correctly.

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     
  • dev->dev_data is set in zatm.c, calling zatm_start() will overwrite this
    dev->dev_data in uPD98402_start() and a subsequent PRIV(dev)->lock
    (i.e dev->phy_data->lock) will result in a null-ptr-dereference.

    I believe this is a typo and what it actually want to do is to allocate
    phy_data instead of dev_data.

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     

02 Mar, 2021

2 commits

  • lanai_dev_open() can fail. When it fail, lanai->base is unmapped and the
    pci device is disabled. The caller, lanai_init_one(), then tries to run
    atm_dev_deregister(). This will subsequently call lanai_dev_close() and
    use the already released MMIO area.

    To fix this issue, set the lanai->base to NULL if open fail,
    and test the flag in lanai_dev_close().

    [ 8.324153] lanai: lanai_start() failed, err=19
    [ 8.324819] lanai(itf 0): shutting down interface
    [ 8.325211] BUG: unable to handle page fault for address: ffffc90000180024
    [ 8.325781] #PF: supervisor write access in kernel mode
    [ 8.326215] #PF: error_code(0x0002) - not-present page
    [ 8.326641] PGD 100000067 P4D 100000067 PUD 100139067 PMD 10013a067 PTE 0
    [ 8.327206] Oops: 0002 [#1] SMP KASAN NOPTI
    [ 8.327557] CPU: 0 PID: 95 Comm: modprobe Not tainted 5.11.0-rc7-00090-gdcc0b49040c7 #12
    [ 8.328229] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-48-gd9c812dda519-4
    [ 8.329145] RIP: 0010:lanai_dev_close+0x4f/0xe5 [lanai]
    [ 8.329587] Code: 00 48 c7 c7 00 d3 01 c0 e8 49 4e 0a c2 48 8d bd 08 02 00 00 e8 6e 52 14 c1 48 80
    [ 8.330917] RSP: 0018:ffff8881029ef680 EFLAGS: 00010246
    [ 8.331196] RAX: 000000000003fffe RBX: ffff888102fb4800 RCX: ffffffffc001a98a
    [ 8.331572] RDX: ffffc90000180000 RSI: 0000000000000246 RDI: ffff888102fb4000
    [ 8.331948] RBP: ffff888102fb4000 R08: ffffffff8115da8a R09: ffffed102053deaa
    [ 8.332326] R10: 0000000000000003 R11: ffffed102053dea9 R12: ffff888102fb48a4
    [ 8.332701] R13: ffffffffc00123c0 R14: ffff888102fb4b90 R15: ffff888102fb4b88
    [ 8.333077] FS: 00007f08eb9056a0(0000) GS:ffff88815b400000(0000) knlGS:0000000000000000
    [ 8.333502] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 8.333806] CR2: ffffc90000180024 CR3: 0000000102a28000 CR4: 00000000000006f0
    [ 8.334182] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 8.334557] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 8.334932] Call Trace:
    [ 8.335066] atm_dev_deregister+0x161/0x1a0 [atm]
    [ 8.335324] lanai_init_one.cold+0x20c/0x96d [lanai]
    [ 8.335594] ? lanai_send+0x2a0/0x2a0 [lanai]
    [ 8.335831] local_pci_probe+0x6f/0xb0
    [ 8.336039] pci_device_probe+0x171/0x240
    [ 8.336255] ? pci_device_remove+0xe0/0xe0
    [ 8.336475] ? kernfs_create_link+0xb6/0x110
    [ 8.336704] ? sysfs_do_create_link_sd.isra.0+0x76/0xe0
    [ 8.336983] really_probe+0x161/0x420
    [ 8.337181] driver_probe_device+0x6d/0xd0
    [ 8.337401] device_driver_attach+0x82/0x90
    [ 8.337626] ? device_driver_attach+0x90/0x90
    [ 8.337859] __driver_attach+0x60/0x100
    [ 8.338065] ? device_driver_attach+0x90/0x90
    [ 8.338298] bus_for_each_dev+0xe1/0x140
    [ 8.338511] ? subsys_dev_iter_exit+0x10/0x10
    [ 8.338745] ? klist_node_init+0x61/0x80
    [ 8.338956] bus_add_driver+0x254/0x2a0
    [ 8.339164] driver_register+0xd3/0x150
    [ 8.339370] ? 0xffffffffc0028000
    [ 8.339550] do_one_initcall+0x84/0x250
    [ 8.339755] ? trace_event_raw_event_initcall_finish+0x150/0x150
    [ 8.340076] ? free_vmap_area_noflush+0x1a5/0x5c0
    [ 8.340329] ? unpoison_range+0xf/0x30
    [ 8.340532] ? ____kasan_kmalloc.constprop.0+0x84/0xa0
    [ 8.340806] ? unpoison_range+0xf/0x30
    [ 8.341014] ? unpoison_range+0xf/0x30
    [ 8.341217] do_init_module+0xf8/0x350
    [ 8.341419] load_module+0x3fe6/0x4340
    [ 8.341621] ? vm_unmap_ram+0x1d0/0x1d0
    [ 8.341826] ? ____kasan_kmalloc.constprop.0+0x84/0xa0
    [ 8.342101] ? module_frob_arch_sections+0x20/0x20
    [ 8.342358] ? __do_sys_finit_module+0x108/0x170
    [ 8.342604] __do_sys_finit_module+0x108/0x170
    [ 8.342841] ? __ia32_sys_init_module+0x40/0x40
    [ 8.343083] ? file_open_root+0x200/0x200
    [ 8.343298] ? do_sys_open+0x85/0xe0
    [ 8.343491] ? filp_open+0x50/0x50
    [ 8.343675] ? exit_to_user_mode_prepare+0xfc/0x130
    [ 8.343935] do_syscall_64+0x33/0x40
    [ 8.344132] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 8.344401] RIP: 0033:0x7f08eb887cf7
    [ 8.344594] Code: 48 89 57 30 48 8b 04 24 48 89 47 38 e9 1d a0 02 00 48 89 f8 48 89 f7 48 89 d6 41
    [ 8.345565] RSP: 002b:00007ffcd5c98ad8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    [ 8.345962] RAX: ffffffffffffffda RBX: 00000000008fea70 RCX: 00007f08eb887cf7
    [ 8.346336] RDX: 0000000000000000 RSI: 00000000008fd9e0 RDI: 0000000000000003
    [ 8.346711] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000001
    [ 8.347085] R10: 00007f08eb8eb300 R11: 0000000000000246 R12: 00000000008fd9e0
    [ 8.347460] R13: 0000000000000000 R14: 00000000008fddd0 R15: 0000000000000001
    [ 8.347836] Modules linked in: lanai(+) atm
    [ 8.348065] CR2: ffffc90000180024
    [ 8.348244] ---[ end trace 7fdc1c668f2003e5 ]---
    [ 8.348490] RIP: 0010:lanai_dev_close+0x4f/0xe5 [lanai]
    [ 8.348772] Code: 00 48 c7 c7 00 d3 01 c0 e8 49 4e 0a c2 48 8d bd 08 02 00 00 e8 6e 52 14 c1 48 80
    [ 8.349745] RSP: 0018:ffff8881029ef680 EFLAGS: 00010246
    [ 8.350022] RAX: 000000000003fffe RBX: ffff888102fb4800 RCX: ffffffffc001a98a
    [ 8.350397] RDX: ffffc90000180000 RSI: 0000000000000246 RDI: ffff888102fb4000
    [ 8.350772] RBP: ffff888102fb4000 R08: ffffffff8115da8a R09: ffffed102053deaa
    [ 8.351151] R10: 0000000000000003 R11: ffffed102053dea9 R12: ffff888102fb48a4
    [ 8.351525] R13: ffffffffc00123c0 R14: ffff888102fb4b90 R15: ffff888102fb4b88
    [ 8.351918] FS: 00007f08eb9056a0(0000) GS:ffff88815b400000(0000) knlGS:0000000000000000
    [ 8.352343] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 8.352647] CR2: ffffc90000180024 CR3: 0000000102a28000 CR4: 00000000000006f0
    [ 8.353022] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 8.353397] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 8.353958] modprobe (95) used greatest stack depth: 26216 bytes left

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     
  • label err_eni_release is reachable when eni_start() fail.
    In eni_start() it calls dev->phy->start() in the last step, if start()
    fail we don't need to call phy->stop(), if start() is never called, we
    neither need to call phy->stop(), otherwise null-ptr-deref will happen.

    In order to fix this issue, don't call phy->stop() in label err_eni_release

    [ 4.875714] ==================================================================
    [ 4.876091] BUG: KASAN: null-ptr-deref in suni_stop+0x47/0x100 [suni]
    [ 4.876433] Read of size 8 at addr 0000000000000030 by task modprobe/95
    [ 4.876778]
    [ 4.876862] CPU: 0 PID: 95 Comm: modprobe Not tainted 5.11.0-rc7-00090-gdcc0b49040c7 #2
    [ 4.877290] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-48-gd94
    [ 4.877876] Call Trace:
    [ 4.878009] dump_stack+0x7d/0xa3
    [ 4.878191] kasan_report.cold+0x10c/0x10e
    [ 4.878410] ? __slab_free+0x2f0/0x340
    [ 4.878612] ? suni_stop+0x47/0x100 [suni]
    [ 4.878832] suni_stop+0x47/0x100 [suni]
    [ 4.879043] eni_do_release+0x3b/0x70 [eni]
    [ 4.879269] eni_init_one.cold+0x1152/0x1747 [eni]
    [ 4.879528] ? _raw_spin_lock_irqsave+0x7b/0xd0
    [ 4.879768] ? eni_ioctl+0x270/0x270 [eni]
    [ 4.879990] ? __mutex_lock_slowpath+0x10/0x10
    [ 4.880226] ? eni_ioctl+0x270/0x270 [eni]
    [ 4.880448] local_pci_probe+0x6f/0xb0
    [ 4.880650] pci_device_probe+0x171/0x240
    [ 4.880864] ? pci_device_remove+0xe0/0xe0
    [ 4.881086] ? kernfs_create_link+0xb6/0x110
    [ 4.881315] ? sysfs_do_create_link_sd.isra.0+0x76/0xe0
    [ 4.881594] really_probe+0x161/0x420
    [ 4.881791] driver_probe_device+0x6d/0xd0
    [ 4.882010] device_driver_attach+0x82/0x90
    [ 4.882233] ? device_driver_attach+0x90/0x90
    [ 4.882465] __driver_attach+0x60/0x100
    [ 4.882671] ? device_driver_attach+0x90/0x90
    [ 4.882903] bus_for_each_dev+0xe1/0x140
    [ 4.883114] ? subsys_dev_iter_exit+0x10/0x10
    [ 4.883346] ? klist_node_init+0x61/0x80
    [ 4.883557] bus_add_driver+0x254/0x2a0
    [ 4.883764] driver_register+0xd3/0x150
    [ 4.883971] ? 0xffffffffc0038000
    [ 4.884149] do_one_initcall+0x84/0x250
    [ 4.884355] ? trace_event_raw_event_initcall_finish+0x150/0x150
    [ 4.884674] ? unpoison_range+0xf/0x30
    [ 4.884875] ? ____kasan_kmalloc.constprop.0+0x84/0xa0
    [ 4.885150] ? unpoison_range+0xf/0x30
    [ 4.885352] ? unpoison_range+0xf/0x30
    [ 4.885557] do_init_module+0xf8/0x350
    [ 4.885760] load_module+0x3fe6/0x4340
    [ 4.885960] ? vm_unmap_ram+0x1d0/0x1d0
    [ 4.886166] ? ____kasan_kmalloc.constprop.0+0x84/0xa0
    [ 4.886441] ? module_frob_arch_sections+0x20/0x20
    [ 4.886697] ? __do_sys_finit_module+0x108/0x170
    [ 4.886941] __do_sys_finit_module+0x108/0x170
    [ 4.887178] ? __ia32_sys_init_module+0x40/0x40
    [ 4.887419] ? file_open_root+0x200/0x200
    [ 4.887634] ? do_sys_open+0x85/0xe0
    [ 4.887826] ? filp_open+0x50/0x50
    [ 4.888009] ? fpregs_assert_state_consistent+0x4d/0x60
    [ 4.888287] ? exit_to_user_mode_prepare+0x2f/0x130
    [ 4.888547] do_syscall_64+0x33/0x40
    [ 4.888739] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 4.889010] RIP: 0033:0x7ff62fcf1cf7
    [ 4.889202] Code: 48 89 57 30 48 8b 04 24 48 89 47 38 e9 1d a0 02 00 48 89 f8 48 89 f71
    [ 4.890172] RSP: 002b:00007ffe6644ade8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    [ 4.890570] RAX: ffffffffffffffda RBX: 0000000000f2ca70 RCX: 00007ff62fcf1cf7
    [ 4.890944] RDX: 0000000000000000 RSI: 0000000000f2b9e0 RDI: 0000000000000003
    [ 4.891318] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000001
    [ 4.891691] R10: 00007ff62fd55300 R11: 0000000000000246 R12: 0000000000f2b9e0
    [ 4.892064] R13: 0000000000000000 R14: 0000000000f2bdd0 R15: 0000000000000001
    [ 4.892439] ==================================================================

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     

16 Feb, 2021

1 commit

  • idt77252 is broken and wont load on amd64 systems
    modprobe idt77252 shows the following

    idt77252_init: skb->cb is too small (48 < 56)

    Add packed attribute to struct idt77252_skb_prv and struct atm_skb_data
    so that the total size can be cb)
    Also convert runtime size check to buildtime size check in
    idt77252_init()

    Signed-off-by: Tong Zhang
    Signed-off-by: David S. Miller

    Tong Zhang
     

22 Dec, 2020

1 commit


20 Nov, 2020

1 commit


19 Nov, 2020

3 commits

  • lanai_shutdown_tx_vci() uses in_interrupt() to issue a warning message
    if the function was used in context in which it is not safe to sleep.

    The usage of in_interrupt() in driver code is deprecated as it can not always
    detect all states where it is not allowed to sleep.

    msleep() has debug code which will trigger a warning if used in bad
    context.

    Remove in_interrupt().

    Cc: Chas Williams
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Jakub Kicinski

    Sebastian Andrzej Siewior
     
  • push_scqe() uses in_interrupt() to figure out if it is allowed to sleep.

    The usage of in_interrupt() in drivers is phased out and Linus clearly
    requested that code which changes behaviour depending on context should
    either be separated or the context be conveyed in an argument passed by the
    caller, which usually knows the context.

    Aside of that in_interrupt() is not correct as it does not catch preempt
    disabled regions which neither can sleep.

    ns_send() (the only caller of push_scqe()) has the following callers:

    - vcc_sendmsg() used as proto_ops::sendmsg is expected to be invoked in
    preemtible context.
    -> vcc->dev->ops->send() (ns_send())

    - atm_vcc::send via atmdev_ops::send either directly (pointer copied by
    atm_init_aal34() or atm_init_aal5()) or via atm_send_aal0().
    This is invoked by drivers (like br2684, clip, pppoatm, ...) which are
    called from net_device_ops::ndo_start_xmit with BH disabled.

    Add atmdev_ops::send_bh which is used by callers from BH context
    (atm_send_aal*()) and if this callback missing then ::send is used
    instead.
    Implement this callback in nicstar and use it to replace in_interrupt().

    Cc: Chas Williams
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Jakub Kicinski

    Sebastian Andrzej Siewior
     
  • The `skb' is mapped for DMA in ns_send() but does not unmap DMA in case
    push_scqe() fails to submit the `skb'. The memory of the `skb' is
    released so only the DMA mapping is leaking.

    Unmap the DMA mapping in case push_scqe() failed.

    Fixes: 864a3ff635fa7 ("atm: [nicstar] remove virt_to_bus() and support 64-bit platforms")
    Cc: Chas Williams
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Jakub Kicinski

    Sebastian Andrzej Siewior
     

29 Sep, 2020

1 commit

  • The only usage of atmtcp_v_dev_ops is to pass its address to
    atm_dev_register() which takes a pointer to const, and comparing its
    address to another address, which does not modify it. Make it const to
    allow the compiler to put it in read-only memory.

    Signed-off-by: Rikard Falkeborn
    Signed-off-by: David S. Miller

    Rikard Falkeborn
     

05 Sep, 2020

1 commit


04 Sep, 2020

1 commit

  • Pull networking fixes from David Miller:

    1) Use netif_rx_ni() when necessary in batman-adv stack, from Jussi
    Kivilinna.

    2) Fix loss of RTT samples in rxrpc, from David Howells.

    3) Memory leak in hns_nic_dev_probe(), from Dignhao Liu.

    4) ravb module cannot be unloaded, fix from Yuusuke Ashizuka.

    5) We disable BH for too lokng in sctp_get_port_local(), add a
    cond_resched() here as well, from Xin Long.

    6) Fix memory leak in st95hf_in_send_cmd, from Dinghao Liu.

    7) Out of bound access in bpf_raw_tp_link_fill_link_info(), from
    Yonghong Song.

    8) Missing of_node_put() in mt7530 DSA driver, from Sumera
    Priyadarsini.

    9) Fix crash in bnxt_fw_reset_task(), from Michael Chan.

    10) Fix geneve tunnel checksumming bug in hns3, from Yi Li.

    11) Memory leak in rxkad_verify_response, from Dinghao Liu.

    12) In tipc, don't use smp_processor_id() in preemptible context. From
    Tuong Lien.

    13) Fix signedness issue in mlx4 memory allocation, from Shung-Hsi Yu.

    14) Missing clk_disable_prepare() in gemini driver, from Dan Carpenter.

    15) Fix ABI mismatch between driver and firmware in nfp, from Louis
    Peens.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (110 commits)
    net/smc: fix sock refcounting in case of termination
    net/smc: reset sndbuf_desc if freed
    net/smc: set rx_off for SMCR explicitly
    net/smc: fix toleration of fake add_link messages
    tg3: Fix soft lockup when tg3_reset_task() fails.
    doc: net: dsa: Fix typo in config code sample
    net: dp83867: Fix WoL SecureOn password
    nfp: flower: fix ABI mismatch between driver and firmware
    tipc: fix shutdown() of connectionless socket
    ipv6: Fix sysctl max for fib_multipath_hash_policy
    drivers/net/wan/hdlc: Change the default of hard_header_len to 0
    net: gemini: Fix another missing clk_disable_unprepare() in probe
    net: bcmgenet: fix mask check in bcmgenet_validate_flow()
    amd-xgbe: Add support for new port mode
    net: usb: dm9601: Add USB ID of Keenetic Plus DSL
    vhost: fix typo in error message
    net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init()
    pktgen: fix error message with wrong function name
    net: ethernet: ti: am65-cpsw: fix rmii 100Mbit link mode
    cxgb4: fix thermal zone device registration
    ...

    Linus Torvalds
     

25 Aug, 2020

1 commit


24 Aug, 2020

1 commit

  • Replace the existing /* fall through */ comments and its variants with
    the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
    fall-through markings when it is the case.

    [1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

06 Aug, 2020

1 commit

  • Pull networking updates from David Miller:

    1) Support 6Ghz band in ath11k driver, from Rajkumar Manoharan.

    2) Support UDP segmentation in code TSO code, from Eric Dumazet.

    3) Allow flashing different flash images in cxgb4 driver, from Vishal
    Kulkarni.

    4) Add drop frames counter and flow status to tc flower offloading,
    from Po Liu.

    5) Support n-tuple filters in cxgb4, from Vishal Kulkarni.

    6) Various new indirect call avoidance, from Eric Dumazet and Brian
    Vazquez.

    7) Fix BPF verifier failures on 32-bit pointer arithmetic, from
    Yonghong Song.

    8) Support querying and setting hardware address of a port function via
    devlink, use this in mlx5, from Parav Pandit.

    9) Support hw ipsec offload on bonding slaves, from Jarod Wilson.

    10) Switch qca8k driver over to phylink, from Jonathan McDowell.

    11) In bpftool, show list of processes holding BPF FD references to
    maps, programs, links, and btf objects. From Andrii Nakryiko.

    12) Several conversions over to generic power management, from Vaibhav
    Gupta.

    13) Add support for SO_KEEPALIVE et al. to bpf_setsockopt(), from Dmitry
    Yakunin.

    14) Various https url conversions, from Alexander A. Klimov.

    15) Timestamping and PHC support for mscc PHY driver, from Antoine
    Tenart.

    16) Support bpf iterating over tcp and udp sockets, from Yonghong Song.

    17) Support 5GBASE-T i40e NICs, from Aleksandr Loktionov.

    18) Add kTLS RX HW offload support to mlx5e, from Tariq Toukan.

    19) Fix the ->ndo_start_xmit() return type to be netdev_tx_t in several
    drivers. From Luc Van Oostenryck.

    20) XDP support for xen-netfront, from Denis Kirjanov.

    21) Support receive buffer autotuning in MPTCP, from Florian Westphal.

    22) Support EF100 chip in sfc driver, from Edward Cree.

    23) Add XDP support to mvpp2 driver, from Matteo Croce.

    24) Support MPTCP in sock_diag, from Paolo Abeni.

    25) Commonize UDP tunnel offloading code by creating udp_tunnel_nic
    infrastructure, from Jakub Kicinski.

    26) Several pci_ --> dma_ API conversions, from Christophe JAILLET.

    27) Add FLOW_ACTION_POLICE support to mlxsw, from Ido Schimmel.

    28) Add SK_LOOKUP bpf program type, from Jakub Sitnicki.

    29) Refactor a lot of networking socket option handling code in order to
    avoid set_fs() calls, from Christoph Hellwig.

    30) Add rfc4884 support to icmp code, from Willem de Bruijn.

    31) Support TBF offload in dpaa2-eth driver, from Ioana Ciornei.

    32) Support XDP_REDIRECT in qede driver, from Alexander Lobakin.

    33) Support PCI relaxed ordering in mlx5 driver, from Aya Levin.

    34) Support TCP syncookies in MPTCP, from Flowian Westphal.

    35) Fix several tricky cases of PMTU handling wrt. briding, from Stefano
    Brivio.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2056 commits)
    net: thunderx: initialize VF's mailbox mutex before first usage
    usb: hso: remove bogus check for EINPROGRESS
    usb: hso: no complaint about kmalloc failure
    hso: fix bailout in error case of probe
    ip_tunnel_core: Fix build for archs without _HAVE_ARCH_IPV6_CSUM
    selftests/net: relax cpu affinity requirement in msg_zerocopy test
    mptcp: be careful on subflow creation
    selftests: rtnetlink: make kci_test_encap() return sub-test result
    selftests: rtnetlink: correct the final return value for the test
    net: dsa: sja1105: use detected device id instead of DT one on mismatch
    tipc: set ub->ifindex for local ipv6 address
    ipv6: add ipv6_dev_find()
    net: openvswitch: silence suspicious RCU usage warning
    Revert "vxlan: fix tos value before xmit"
    ptp: only allow phase values lower than 1 period
    farsync: switch from 'pci_' to 'dma_' API
    wan: wanxl: switch from 'pci_' to 'dma_' API
    hv_netvsc: do not use VF device if link is down
    dpaa2-eth: Fix passing zero to 'PTR_ERR' warning
    net: macb: Properly handle phylink on at91sam9x
    ...

    Linus Torvalds
     

05 Aug, 2020

1 commit

  • Pull uninitialized_var() macro removal from Kees Cook:
    "This is long overdue, and has hidden too many bugs over the years. The
    series has several "by hand" fixes, and then a trivial treewide
    replacement.

    - Clean up non-trivial uses of uninitialized_var()

    - Update documentation and checkpatch for uninitialized_var() removal

    - Treewide removal of uninitialized_var()"

    * tag 'uninit-macro-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
    compiler: Remove uninitialized_var() macro
    treewide: Remove uninitialized_var() usage
    checkpatch: Remove awareness of uninitialized_var() macro
    mm/debug_vm_pgtable: Remove uninitialized_var() usage
    f2fs: Eliminate usage of uninitialized_var() macro
    media: sur40: Remove uninitialized_var() usage
    KVM: PPC: Book3S PR: Remove uninitialized_var() usage
    clk: spear: Remove uninitialized_var() usage
    clk: st: Remove uninitialized_var() usage
    spi: davinci: Remove uninitialized_var() usage
    ide: Remove uninitialized_var() usage
    rtlwifi: rtl8192cu: Remove uninitialized_var() usage
    b43: Remove uninitialized_var() usage
    drbd: Remove uninitialized_var() usage
    x86/mm/numa: Remove uninitialized_var() usage
    docs: deprecated.rst: Add uninitialized_var()

    Linus Torvalds