CVE-2022-49625

Summary

In the Linux kernel, the following vulnerability has been resolved:

sfc: fix kernel panic when creating VF

When creating VFs a kernel panic can happen when calling to efx_ef10_try_update_nic_stats_vf.

When releasing a DMA coherent buffer, sometimes, I don't know in what specific circumstances, it has to unmap memory with vunmap. It is disallowed to do that in IRQ context or with BH disabled. Otherwise, we hit this line in vunmap, causing the crash: BUG_ON(in_interrupt());

This patch reenables BH to release the buffer.

Log messages when the bug is hit: kernel BUG at mm/vmalloc.c:2727! invalid opcode: 0000 [#1] PREEMPT SMP NOPTI CPU: 6 PID: 1462 Comm: NetworkManager Kdump: loaded Tainted: G I ——— — 5.14.0-119.el9.x86_64 #1 Hardware name: Dell Inc. PowerEdge R740/06WXJT, BIOS 2.8.2 08/27/2020 RIP: 0010:vunmap+0x2e/0x30 …skip… Call Trace: __iommu_dma_free+0x96/0x100 efx_nic_free_buffer+0x2b/0x40 [sfc] efx_ef10_try_update_nic_stats_vf+0x14a/0x1c0 [sfc] efx_ef10_update_stats_vf+0x18/0x40 [sfc] efx_start_all+0x15e/0x1d0 [sfc] efx_net_open+0x5a/0xe0 [sfc] __dev_open+0xe7/0x1a0 __dev_change_flags+0x1d7/0x240 dev_change_flags+0x21/0x60 …skip…

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < d9840212a9c00507347c703f4fdeda16400407e0affected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < b9072305270579a9d6afc9b926166231e5b1a7c8affected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < 82bcb730f856086f033e6c04082eb4503d4c2fa4affected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < da346adcf5573fd8663cabfdfe8371009629a906affected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < b82e4ad58a7fb72456503958a93060f87896e629affected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < 68e5f32f0de9594629ff9e599294d9801c6187deaffected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < 16662524ec5da801fb78a1afcaf6e782f1cf103aaffected
LinuxLinuxd778819609a27efd5358da8151a0ad3507243e19 < ada74c5539eba06cf8b47d068f92e0b3963a9a6eaffected
LinuxLinux4.2affected
LinuxLinux0 < 4.2unaffected
LinuxLinux4.9.324 <= 4.9.*unaffected
LinuxLinux4.14.289 <= 4.14.*unaffected
LinuxLinux4.19.253 <= 4.19.*unaffected
LinuxLinux5.4.207 <= 5.4.*unaffected
LinuxLinux5.10.132 <= 5.10.*unaffected
LinuxLinux5.15.56 <= 5.15.*unaffected
LinuxLinux5.18.13 <= 5.18.*unaffected
LinuxLinux5.19 <= *unaffected

Weaknesses

References