CVE-2022-49687

Source
https://cve.org/CVERecord?id=CVE-2022-49687
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49687.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2022-49687
Downstream
Related
Published
2025-02-26T02:24:13.187Z
Modified
2026-03-12T03:25:34.871028Z
Summary
virtio_net: fix xdp_rxq_info bug after suspend/resume
Details

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

virtionet: fix xdprxq_info bug after suspend/resume

The following sequence currently causes a driver bug warning when using virtio_net:

# ip link set eth0 up # echo mem > /sys/power/state (or e.g. # rtcwake -s 10 -m mem) <resume> # ip link set eth0 down

Missing register, driver bug WARNING: CPU: 0 PID: 375 at net/core/xdp.c:138 xdprxqinfounreg+0x58/0x60 Call trace: xdprxqinfounreg+0x58/0x60 virtnet_close+0x58/0xac __devclosemany+0xac/0x140 _devchangeflags+0xd8/0x210 devchangeflags+0x24/0x64 dosetlink+0x230/0xdd0 ...

This happens because virtnetfreeze() frees the receivequeue completely (including struct xdprxqinfo) but does not call xdprxqinfounreg(). Similarly, virtnetrestore() sets up the receivequeue again but does not call xdprxqinforeg().

Actually, parts of virtnetfreezedown() and virtnetrestoreup() are almost identical to virtnetclose() and virtnetopen(): only the calls to xdprxqinfo_(un)reg() are missing. This means that we can fix this easily and avoid such problems in the future by just calling virtnet_close()/open() from the freeze/restore handlers.

Aside from adding the missing xdprxqinfo calls the only difference is that the refill work is only cancelled if netif_running(). However, this should not make any functional difference since the refill work should only be active if the network interface is actually up.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49687.json"
}
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
754b8a21a96d5f11712245aef907149606b323ae
Fixed
9222672fa6370f0ec3d899662cb8680e9282fc4c
Fixed
8c7a32b7c15555beddc5810c3334d9cefff061bf
Fixed
340fbdc8011f2dc678f622c5ce1cbb5ab8305de7
Fixed
8d7fe9ad6fddc2af8bde4b921b4f8fab231ed38c
Fixed
57ee40f1b198b59d43c216fbc4672f9300d3c8b0
Fixed
8af52fe9fd3bf5e7478da99193c0632276e1dfce

Database specific

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