Description
In the Linux kernel, the following vulnerability has been resolved: usb: xhci: tegra: fix sleep in atomic call When we set the dual-role port to Host mode, we observed the following splat: [ 167.057718] BUG: sleeping function called from invalid context at include/linux/sched/mm.h:229 [ 167.057872] Workqueue: events tegra_xusb_usb_phy_work [ 167.057954] Call trace: [ 167.057962] dump_backtrace+0x0/0x210 [ 167.057996] show_stack+0x30/0x50 [ 167.058020] dump_stack_lvl+0x64/0x84 [ 167.058065] dump_stack+0x14/0x34 [ 167.058100] __might_resched+0x144/0x180 [ 167.058140] __might_sleep+0x64/0xd0 [ 167.058171] slab_pre_alloc_hook.constprop.0+0xa8/0x110 [ 167.058202] __kmalloc_track_caller+0x74/0x2b0 [ 167.058233] kvasprintf+0xa4/0x190 [ 167.058261] kasprintf+0x58/0x90 [ 167.058285] tegra_xusb_find_port_node.isra.0+0x58/0xd0 [ 167.058334] tegra_xusb_find_port+0x38/0xa0 [ 167.058380] tegra_xusb_padctl_get_usb3_companion+0x38/0xd0 [ 167.058430] tegra_xhci_id_notify+0x8c/0x1e0 [ 167.058473] notifier_call_chain+0x88/0x100 [ 167.058506] atomic_notifier_call_chain+0x44/0x70 [ 167.058537] tegra_xusb_usb_phy_work+0x60/0xd0 [ 167.058581] process_one_work+0x1dc/0x4c0 [ 167.058618] worker_thread+0x54/0x410 [ 167.058650] kthread+0x188/0x1b0 [ 167.058672] ret_from_fork+0x10/0x20 The function tegra_xusb_padctl_get_usb3_companion eventually calls tegra_xusb_find_port and this in turn calls kasprintf which might sleep and so cannot be called from an atomic context. Fix this by moving the call to tegra_xusb_padctl_get_usb3_companion to the tegra_xhci_id_work function where it is really needed.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
f836e7843036fbf34320356e156cd4267fa5bfa2 to < b4b4f17aa46c025da77aed5133b08971959c9684affectedf836e7843036fbf34320356e156cd4267fa5bfa2 to < 1122474b757a5dd8b2b50008a97f33cdb10dff6eaffectedf836e7843036fbf34320356e156cd4267fa5bfa2 to < 130c61c516cd0684282a8f6ab163281d60642fc5affectedf836e7843036fbf34320356e156cd4267fa5bfa2 to < 1fe6015aa92cc0dfd875c1d3c7c1750a1b0767d9affectedf836e7843036fbf34320356e156cd4267fa5bfa2 to < 4c7f9d2e413dc06a157c4e5dccde84aaf4655eb3affected
Linux Linux
Default version status: affected
5.7affected0 to < 5.7unaffected5.10.178 to ≤ 5.10.*unaffected5.15.107 to ≤ 5.15.*unaffected6.1.24 to ≤ 6.1.*unaffected6.2.11 to ≤ 6.2.*unaffected6.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/b4b4f17aa46c025da77aed5133b08971959c9684 ↗
- https://git.kernel.org/stable/c/1122474b757a5dd8b2b50008a97f33cdb10dff6e ↗
- https://git.kernel.org/stable/c/130c61c516cd0684282a8f6ab163281d60642fc5 ↗
- https://git.kernel.org/stable/c/1fe6015aa92cc0dfd875c1d3c7c1750a1b0767d9 ↗
- https://git.kernel.org/stable/c/4c7f9d2e413dc06a157c4e5dccde84aaf4655eb3 ↗