mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
usb: gadget: u_ether: Fix NULL pointer deref in eth_get_drvinfo
Commitec35c19696("usb: gadget: f_ncm: Fix net_device lifecycle with device_move") reparents the gadget device to /sys/devices/virtual during unbind, clearing the gadget pointer. If the userspace tool queries on the surviving interface during this detached window, this leads to a NULL pointer dereference. Unable to handle kernel NULL pointer dereference Call trace: eth_get_drvinfo+0x50/0x90 ethtool_get_drvinfo+0x5c/0x1f0 __dev_ethtool+0xaec/0x1fe0 dev_ethtool+0x134/0x2e0 dev_ioctl+0x338/0x560 Add a NULL check for dev->gadget in eth_get_drvinfo(). When detached, skip copying the fw_version and bus_info strings, which is natively handled by ethtool_get_drvinfo for empty strings. Suggested-by: Val Packett <val@packett.cool> Reported-by: Val Packett <val@packett.cool> Closes: https://lore.kernel.org/linux-usb/10890524-cf83-4a71-b879-93e2b2cc1fcc@packett.cool/ Fixes:ec35c19696("usb: gadget: f_ncm: Fix net_device lifecycle with device_move") Cc: stable <stable@kernel.org> Signed-off-by: Kuen-Han Tsai <khtsai@google.com> Link: https://patch.msgid.link/20260316-eth-null-deref-v1-1-07005f33be85@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2ca9e46f8f
commit
e002e92e88
|
|
@ -113,8 +113,10 @@ static void eth_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *p)
|
|||
|
||||
strscpy(p->driver, "g_ether", sizeof(p->driver));
|
||||
strscpy(p->version, UETH__VERSION, sizeof(p->version));
|
||||
strscpy(p->fw_version, dev->gadget->name, sizeof(p->fw_version));
|
||||
strscpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof(p->bus_info));
|
||||
if (dev->gadget) {
|
||||
strscpy(p->fw_version, dev->gadget->name, sizeof(p->fw_version));
|
||||
strscpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof(p->bus_info));
|
||||
}
|
||||
}
|
||||
|
||||
/* REVISIT can also support:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user