linux/drivers/net/usb
Qendrim Maxhuni e120f46768 net: usb: qmi_wwan: initialize MAC header offset in qmimux_rx_fixup
Raw IP packets have no MAC header, leaving skb->mac_header uninitialized.
This can trigger kernel panics on ARM64 when xfrm or other subsystems
access the offset due to strict alignment checks.

Initialize the MAC header to prevent such crashes.

This can trigger kernel panics on ARM when running IPsec over the
qmimux0 interface.

Example trace:

    Internal error: Oops: 000000009600004f [#1] SMP
    CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.12.34-gbe78e49cb433 #1
    Hardware name: LS1028A RDB Board (DT)
    pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : xfrm_input+0xde8/0x1318
    lr : xfrm_input+0x61c/0x1318
    sp : ffff800080003b20
    Call trace:
     xfrm_input+0xde8/0x1318
     xfrm6_rcv+0x38/0x44
     xfrm6_esp_rcv+0x48/0xa8
     ip6_protocol_deliver_rcu+0x94/0x4b0
     ip6_input_finish+0x44/0x70
     ip6_input+0x44/0xc0
     ipv6_rcv+0x6c/0x114
     __netif_receive_skb_one_core+0x5c/0x8c
     __netif_receive_skb+0x18/0x60
     process_backlog+0x78/0x17c
     __napi_poll+0x38/0x180
     net_rx_action+0x168/0x2f0

Fixes: c6adf77953 ("net: usb: qmi_wwan: add qmap mux protocol support")
Signed-off-by: Qendrim Maxhuni <qendrim.maxhuni@garderos.com>
Link: https://patch.msgid.link/20251029075744.105113-1-qendrim.maxhuni@garderos.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-11-03 17:36:49 -08:00
..
Kconfig net: usb: lan78xx: add support for generic net selftests via ethtool 2025-08-25 16:22:19 -07:00
Makefile
aqc111.c net: usb: aqc111: debug info before sanitation 2025-05-30 12:14:53 +01:00
aqc111.h
asix.h usbnet: asix AX88772: leave the carrier control to phylink 2025-04-10 18:42:50 -07:00
asix_common.c usbnet: asix AX88772: leave the carrier control to phylink 2025-04-10 18:42:50 -07:00
asix_devices.c net: usb: asix_devices: Check return value of usbnet_get_endpoints 2025-10-29 17:51:48 -07:00
ax88172a.c net: usb: asix: ax88772: Increase phy_name size 2025-03-25 14:35:32 -07:00
ax88179_178a.c net: usb: ax88179_178a: improve link status logs 2024-06-24 10:15:09 +01:00
catc.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
cdc-phonet.c
cdc_eem.c
cdc_ether.c cdc_ether|r8152: ThinkPad Hybrid USB-C/A Dock quirk 2025-03-17 21:25:25 +01:00
cdc_mbim.c net: usb: cdc_mbim: fix Telit Cinterion FE990A name 2025-02-28 17:55:02 -08:00
cdc_ncm.c cdc_ncm: Flag Intel OEM version of Fibocom L850-GL as WWAN 2025-08-19 17:16:37 -07:00
cdc_subset.c
ch9200.c net: ch9200: fix uninitialised access during mii_nway_restart 2025-05-28 19:10:04 -07:00
cx82310_eth.c
dm9601.c net: usb: dm9601: fix wrong return value in dm9601_mdio_read 2024-02-27 18:17:23 -08:00
gl620a.c usbnet: gl620a: fix endpoint checking in genelink_bind() 2025-02-27 11:35:10 +01:00
hso.c net: hso: constify the struct device_type usage 2024-02-21 09:45:23 +00:00
huawei_cdc_ncm.c
int51x1.c
ipheth.c usbnet: ipheth: document scope of NCM implementation 2025-01-28 12:16:32 +01:00
kalmia.c
kaweth.c
lan78xx.c net: usb: lan78xx: fix use of improperly initialized dev->chipid in lan78xx_reset 2025-10-15 18:27:48 -07:00
lan78xx.h
lg-vl600.c
mcs7830.c
net1080.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
pegasus.c
pegasus.h
plusb.c
qmi_wwan.c net: usb: qmi_wwan: initialize MAC header offset in qmimux_rx_fixup 2025-11-03 17:36:49 -08:00
r8152.c r8152: add error handling in rtl8152_driver_init 2025-10-14 12:07:21 +02:00
r8153_ecm.c cdc_ether|r8152: ThinkPad Hybrid USB-C/A Dock quirk 2025-03-17 21:25:25 +01:00
rndis_host.c Revert "rndis_host: Flag RNDIS modems as WWAN devices" 2025-04-25 18:46:13 -07:00
rtl8150.c net: usb: rtl8150: Fix frame padding 2025-10-16 15:10:02 -07:00
sierra_net.c usb: net: sierra: check for no status endpoint 2025-07-15 16:02:13 -07:00
smsc75xx.c net: usb: remove unused structs 'usb_context' 2024-05-28 15:24:34 +02:00
smsc75xx.h
smsc95xx.c net: usb: smsc95xx: add support for ethtool pause parameters 2025-07-21 17:42:12 -07:00
smsc95xx.h
sr9700.c net: usb: sr9700: only store little-endian values in __le16 variable 2024-10-17 18:09:13 -05:00
sr9700.h
sr9800.c sr9800: Add check for usbnet_get_endpoints 2024-03-06 20:33:01 -08:00
sr9800.h
usbnet.c usbnet: Prevents free active kevent 2025-10-23 17:27:44 -07:00
zaurus.c USB: zaurus: Add ID for A-300/B-500/C-700 2023-08-01 14:44:27 -07:00