CVE-2022-49687

virtio_net: fix xdp_rxq_info bug after suspend/resume

HIGH
7.1
CVSS Score
Published: February 26, 2025 at 02:24 AM UTC
Updated: June 17, 2026 at 05:18 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.1
Exploit prediction
EPSS 0.3%

Description

In the Linux kernel, the following vulnerability has been resolved: virtio_net: fix xdp_rxq_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 xdp_rxq_info_unreg+0x58/0x60 Call trace: xdp_rxq_info_unreg+0x58/0x60 virtnet_close+0x58/0xac __dev_close_many+0xac/0x140 __dev_change_flags+0xd8/0x210 dev_change_flags+0x24/0x64 do_setlink+0x230/0xdd0 ... This happens because virtnet_freeze() frees the receive_queue completely (including struct xdp_rxq_info) but does not call xdp_rxq_info_unreg(). Similarly, virtnet_restore() sets up the receive_queue again but does not call xdp_rxq_info_reg(). Actually, parts of virtnet_freeze_down() and virtnet_restore_up() are almost identical to virtnet_close() and virtnet_open(): only the calls to xdp_rxq_info_(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 xdp_rxq_info 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.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

4.16 ≤ v < 4.19.2504.16 ≤ v < 5.10.1274.16 ≤ v < 5.15.514.16 ≤ v < 5.18.84.16 ≤ v < 5.194.16 ≤ v < 5.4.2024.20 ≤ v < 5.4.2025.11 ≤ v < 5.15.515.16 ≤ v < 5.18.85.5 ≤ v < 5.10.1274.165.19 rc15.19 rc25.19 rc3754b8a21a96d5f11712245aef907149606b323ae
Vendor states this is fixed in 340fbdc8011f2dc678f622c5ce1cbb5ab8305de7 (fixed)
Vendor states this is fixed in 57ee40f1b198b59d43c216fbc4672f9300d3c8b0 (fixed)
Vendor states this is fixed in 8af52fe9fd3bf5e7478da99193c0632276e1dfce (fixed)
Vendor states this is fixed in 8c7a32b7c15555beddc5810c3334d9cefff061bf (fixed)
Vendor states this is fixed in 8d7fe9ad6fddc2af8bde4b921b4f8fab231ed38c (fixed)
Vendor states this is fixed in 9222672fa6370f0ec3d899662cb8680e9282fc4c (fixed)
Vendor states this is fixed in 4.16 (unaffected)
Vendor states this is fixed in 4.19.250 (unaffected)
Vendor states this is fixed in 5.10.127 (unaffected)
Vendor states this is fixed in 5.15.51 (unaffected)
Vendor states this is fixed in 5.18.8 (unaffected)
Vendor states this is fixed in 5.19 (unaffected)
Vendor states this is fixed in 5.4.202 (unaffected)

References (6)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/340fbdc8011f2dc678f622c5ce1cbb5ab8305de7
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/57ee40f1b198b59d43c216fbc4672f9300d3c8b0
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/8af52fe9fd3bf5e7478da99193c0632276e1dfce
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/8c7a32b7c15555beddc5810c3334d9cefff061bf
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/8d7fe9ad6fddc2af8bde4b921b4f8fab231ed38c
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/9222672fa6370f0ec3d899662cb8680e9282fc4c

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
NVD-CWE-noinfo

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card