In the Linux kernel, the following vulnerability has been resolved:
virtio_net: Fix napi_skb_cache_put warning
After the commit bdacf3e34945 (“net: Use nested-BH locking for
napi_alloc_cache.”) was merged, the following warning began to appear:
WARNING: CPU: 5 PID: 1 at net/core/skbuff.c:1451 napi_skb_cache_put+0x82/0x4b0
__warn+0x12f/0x340
napi_skb_cache_put+0x82/0x4b0
napi_skb_cache_put+0x82/0x4b0
report_bug+0x165/0x370
handle_bug+0x3d/0x80
exc_invalid_op+0x1a/0x50
asm_exc_invalid_op+0x1a/0x20
__free_old_xmit+0x1c8/0x510
napi_skb_cache_put+0x82/0x4b0
__free_old_xmit+0x1c8/0x510
__free_old_xmit+0x1c8/0x510
__pfx___free_old_xmit+0x10/0x10
The issue arises because virtio is assuming it’s running in NAPI context
even when it’s not, such as in the netpoll case.
To resolve this, modify virtnet_poll_tx() to only set NAPI when budget
is available. Same for virtnet_poll_cleantx(), which always assumed that
it was in a NAPI context.
Vendor | Product | Version | CPE |
---|---|---|---|
linux | linux_kernel | * | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
[
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/net/virtio_net.c"
],
"versions": [
{
"version": "df133f3f9625",
"lessThan": "19ac6f29bf64",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "d3af435e8ace",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "842a97b5e44f",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "cc7340f18e45",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "6b5325f24575",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "f5e9a22d19bb",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "468a729b7889",
"status": "affected",
"versionType": "git"
},
{
"version": "df133f3f9625",
"lessThan": "f8321fa75102",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/net/virtio_net.c"
],
"versions": [
{
"version": "5.0",
"status": "affected"
},
{
"version": "0",
"lessThan": "5.0",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "4.19.322",
"lessThanOrEqual": "4.19.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.4.284",
"lessThanOrEqual": "5.4.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.10.226",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.15.167",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.1.109",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.6.50",
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.10.3",
"lessThanOrEqual": "6.10.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "6.11",
"lessThanOrEqual": "*",
"status": "unaffected",
"versionType": "original_commit_for_fix"
}
]
}
]
git.kernel.org/stable/c/19ac6f29bf64304ef04630c8ab56ecd2059d7aa1
git.kernel.org/stable/c/468a729b78895893d0e580ceea49bed8ada2a2bd
git.kernel.org/stable/c/6b5325f2457521bbece29499970c0117a648c620
git.kernel.org/stable/c/842a97b5e44f0c8a9fc356fe976e0e13ddcf7783
git.kernel.org/stable/c/cc7340f18e45886121c131227985d64ef666012f
git.kernel.org/stable/c/d3af435e8ace119e58d8e21d3d2d6a4e7c4a4baa
git.kernel.org/stable/c/f5e9a22d19bb98a7e86034db85eb295e94187caa
git.kernel.org/stable/c/f8321fa75102246d7415a6af441872f6637c93ab