CVE-2024-50296

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-50296
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-50296.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-50296
Downstream
Related
Published
2024-11-19T01:30:43.318Z
Modified
2025-11-28T02:35:31.956823Z
Severity
  • 5.5 (Medium) CVSS_V3 - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
net: hns3: fix kernel crash when uninstalling driver
Details

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

net: hns3: fix kernel crash when uninstalling driver

When the driver is uninstalled and the VF is disabled concurrently, a kernel crash occurs. The reason is that the two actions call function pcidisablesriov(). The numVFs is checked to determine whether to release the corresponding resources. During the second calling, numVFs is not 0 and the resource release function is called. However, the corresponding resource has been released during the first invoking. Therefore, the problem occurs:

[15277.839633][T50670] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020 ... [15278.131557][T50670] Call trace: [15278.134686][T50670] klistput+0x28/0x12c [15278.138682][T50670] klistdel+0x14/0x20 [15278.142592][T50670] devicedel+0xbc/0x3c0 [15278.146676][T50670] pciremovebusdevice+0x84/0x120 [15278.151714][T50670] pcistopandremovebusdevice+0x6c/0x80 [15278.157447][T50670] pciiovremovevirtfn+0xb4/0x12c [15278.162485][T50670] sriovdisable+0x50/0x11c [15278.166829][T50670] pcidisablesriov+0x24/0x30 [15278.171433][T50670] hnae3unregisteraealgoprepare+0x60/0x90 [hnae3] [15278.178039][T50670] hclgeexit+0x28/0xd0 [hclge] [15278.182730][T50670] _sesysdeletemodule.isra.0+0x164/0x230 [15278.188550][T50670] _arm64sysdeletemodule+0x1c/0x30 [15278.193848][T50670] invokesyscall+0x50/0x11c [15278.198278][T50670] el0svccommon.constprop.0+0x158/0x164 [15278.203837][T50670] doel0svc+0x34/0xcc [15278.207834][T50670] el0svc+0x20/0x30

For details, see the following figure.

rmmod hclge disable VFs

hclgeexit() sriovnumvfsstore() ... devicelock() pcidisablesriov() hns3pcisriovconfigure() pcidisablesriov() sriovdisable() sriovdisable() if !numVFs : if !numVFs : return; return; sriovdelvfs() sriovdelvfs() ... ... klistput() klistput() ... ... numVFs = 0; numVFs = 0; deviceunlock();

In this patch, when driver is removing, we get the devicelock() to protect numVFs, just like sriovnumvfsstore().

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/50xxx/CVE-2024-50296.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
b06ad258e01389ca3ff13bc180f3fcd6a608f1cd
Fixed
a0df055775f30850c0da8f7dab40d67c0fd63908
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
c4b64011e458aa2b246cd4e42012cfd83d2d9a5c
Fixed
7ae4e56de7dbd0999578246a536cf52a63f4056d
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
d36b15e3e7b5937cb1f6ac590a85facc3a320642
Fixed
590a4b2d4e0b73586e88bce9b8135b593355ec09
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
0dd8a25f355b4df2d41c08df1716340854c7d4c5
Fixed
e36482b222e00cc7aeeea772fc0cf2943590bc4d
Fixed
76b155e14d9b182ce83d32ada2d0d7219ea8c8dd
Fixed
719edd9f3372ce7fb3b157647c6658672946874b
Fixed
b5c94e4d947d15d521e935ff10c5a22a7883dea5
Fixed
df3dff8ab6d79edc942464999d06fbaedf8cdd18
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Last affected
9b5a29f0acefa3eb1dbe2fa302b393eeff64d933

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
4.19.324
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.286
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.230
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.172
Type
ECOSYSTEM
Events
Introduced
5.15.0
Fixed
6.1.117
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.6.61
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.11.8