CVE-2022-48688

Source
https://cve.org/CVERecord?id=CVE-2022-48688
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-48688.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2022-48688
Downstream
Related
Published
2024-05-03T14:59:45.253Z
Modified
2026-04-11T12:41:16.853341Z
Summary
i40e: Fix kernel crash during module removal
Details

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

i40e: Fix kernel crash during module removal

The driver incorrectly frees client instance and subsequent i40e module removal leads to kernel crash.

Reproducer: 1. Do ethtool offline test followed immediately by another one host# ethtool -t eth0 offline; ethtool -t eth0 offline 2. Remove recursively irdma module that also removes i40e module host# modprobe -r irdma

Result: [ 8675.035651] i40e 0000:3d:00.0 eno1: offline testing starting [ 8675.193774] i40e 0000:3d:00.0 eno1: testing finished [ 8675.201316] i40e 0000:3d:00.0 eno1: offline testing starting [ 8675.358921] i40e 0000:3d:00.0 eno1: testing finished [ 8675.496921] i40e 0000:3d:00.0: IRDMA hardware initialization FAILED initstate=2 status=-110 [ 8686.188955] i40e 0000:3d:00.1: i40eptpstop: removed PHC on eno2 [ 8686.943890] i40e 0000:3d:00.1: Deleted LAN device PF1 bus=0x3d dev=0x00 func=0x01 [ 8686.952669] i40e 0000:3d:00.0: i40eptpstop: removed PHC on eno1 [ 8687.761787] BUG: kernel NULL pointer dereference, address: 0000000000000030 [ 8687.768755] #PF: supervisor read access in kernel mode [ 8687.773895] #PF: errorcode(0x0000) - not-present page [ 8687.779034] PGD 0 P4D 0 [ 8687.781575] Oops: 0000 [#1] PREEMPT SMP NOPTI [ 8687.785935] CPU: 51 PID: 172891 Comm: rmmod Kdump: loaded Tainted: G W I 5.19.0+ #2 [ 8687.794800] Hardware name: Intel Corporation S2600WFD/S2600WFD, BIOS SE5C620.86B.0X.02.0001.051420190324 05/14/2019 [ 8687.805222] RIP: 0010:i40elandeldevice+0x13/0xb0 [i40e] [ 8687.810719] Code: d4 84 c0 0f 84 b8 25 01 00 e9 9c 25 01 00 41 bc f4 ff ff ff eb 91 90 0f 1f 44 00 00 41 54 55 53 48 8b 87 58 08 00 00 48 89 fb <48> 8b 68 30 48 89 ef e8 21 8a 0f d5 48 89 ef e8 a9 78 0f d5 48 8b [ 8687.829462] RSP: 0018:ffffa604072efce0 EFLAGS: 00010202 [ 8687.834689] RAX: 0000000000000000 RBX: ffff8f43833b2000 RCX: 0000000000000000 [ 8687.841821] RDX: 0000000000000000 RSI: ffff8f4b0545b298 RDI: ffff8f43833b2000 [ 8687.848955] RBP: ffff8f43833b2000 R08: 0000000000000001 R09: 0000000000000000 [ 8687.856086] R10: 0000000000000000 R11: 000ffffffffff000 R12: ffff8f43833b2ef0 [ 8687.863218] R13: ffff8f43833b2ef0 R14: ffff915103966000 R15: ffff8f43833b2008 [ 8687.870342] FS: 00007f79501c3740(0000) GS:ffff8f4adffc0000(0000) knlGS:0000000000000000 [ 8687.878427] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 8687.884174] CR2: 0000000000000030 CR3: 000000014276e004 CR4: 00000000007706e0 [ 8687.891306] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 8687.898441] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 8687.905572] PKRU: 55555554 [ 8687.908286] Call Trace: [ 8687.910737] <TASK> [ 8687.912843] i40eremove+0x2c0/0x330 [i40e] [ 8687.917040] pcideviceremove+0x33/0xa0 [ 8687.920962] devicereleasedriverinternal+0x1aa/0x230 [ 8687.926188] driverdetach+0x44/0x90 [ 8687.929770] busremovedriver+0x55/0xe0 [ 8687.933693] pciunregisterdriver+0x2a/0xb0 [ 8687.937967] i40eexitmodule+0xc/0xf48 [i40e]

Two offline tests cause IRDMA driver failure (ETIMEDOUT) and this failure is indicated back to i40eclientsubtask() that calls i40eclientdelinstance() to free client instance referenced by pf->cinst and sets this pointer to NULL. During the module removal i40eremove() calls i40elandel_device() that dereferences pf->cinst that is NULL -> crash. Do not remove client instance when client open callbacks fails and just clear __I40ECLIENTINSTANCEOPENED bit. The driver also needs to take care about this situation (when netdev is up and client is NOT opened) in i40enotifyclientofnetdevclose() and calls client close callback only when _I40ECLIENTINSTANCEOPENED is set.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/48xxx/CVE-2022-48688.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
0ef2d5afb12d379f4dd5df696219a01b88bb778a
Fixed
c49f320e2492738d478bc427dcd54ccfe0cba746
Fixed
5332a094514852d5e58c278cf4193adb937337fc
Fixed
342d77769a6cceb3df7720a1e18baa4339eee3fc
Fixed
2ed94383f3a2693dbf5bc47c514b42524bd8f9ae
Fixed
38af35bec59a8431a1eb29da994a0a45cba275d9
Fixed
fb8396aeda5872369a8ed6d2301e2c86e303c520

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-48688.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.12.0
Fixed
4.19.258
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.213
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.143
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.68
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
5.19.9

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-48688.json"