CVE-2021-47555

High

Description

In the Linux kernel, the following vulnerability has been resolved: net: vlan: fix underflow for the real_dev refcnt Inject error before dev_hold(real_dev) in register_vlan_dev(), and execute the following testcase: ip link add dev dummy1 type dummy ip link add name dummy1.100 link dummy1 type vlan id 100 ip link del dev dummy1 When the dummy netdevice is removed, we will get a WARNING as following: ======================================================================= refcount_t: decrement hit 0; leaking memory. WARNING: CPU: 2 PID: 0 at lib/refcount.c:31 refcount_warn_saturate+0xbf/0x1e0 and an endless loop of: ======================================================================= unregister_netdevice: waiting for dummy1 to become free. Usage count = -1073741824 That is because dev_put(real_dev) in vlan_dev_free() be called without dev_hold(real_dev) in register_vlan_dev(). It makes the refcnt of real_dev underflow. Move the dev_hold(real_dev) to vlan_dev_init() which is the call-back of ndo_init(). That makes dev_hold() and dev_put() for vlan's real_dev symmetrical.

SeverityHigh
CVSS7.8
Exploit probability—
ProductLinux Kernel
PublishedMay 24, 2024
First seenMay 24, 2024

How to fix

Update
  • linux linux_kernel5.4.163, 5.10.83, 5.15, 5.15.6 or later

Affected products

ProductAffected versionsFixed in
linux linux_kernel5.4.160 ≤ v < 5.4.163, 5.10.80 ≤ v < 5.10.83, 5.14.19 ≤ v < 5.15, 5.15.3 ≤ v < 5.15.6, 5.165.4.163, 5.10.83, 5.15, 5.15.6

Check your version

Choose the product and enter the version you run to see whether it falls in the affected range.

In the Intelligence 360 plan

Attack Surface Management

See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.