CVE-2021-47555

Source
https://nvd.nist.gov/vuln/detail/CVE-2021-47555
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2021-47555.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2021-47555
Related
Published
2024-05-24T15:15:20Z
Modified
2024-11-04T22:46:19.998561Z
Summary
[none]
Details

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

net: vlan: fix underflow for the real_dev refcnt

Inject error before devhold(realdev) in registervlandev(), 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:

======================================================================= refcountt: decrement hit 0; leaking memory. WARNING: CPU: 2 PID: 0 at lib/refcount.c:31 refcountwarn_saturate+0xbf/0x1e0

and an endless loop of:

======================================================================= unregister_netdevice: waiting for dummy1 to become free. Usage count = -1073741824

That is because devput(realdev) in vlandevfree() be called without devhold(realdev) in registervlandev(). It makes the refcnt of real_dev underflow.

Move the devhold(realdev) to vlandevinit() which is the call-back of ndoinit(). That makes devhold() and devput() for vlan's realdev symmetrical.

References

Affected packages

Debian:11 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
5.10.84-1

Affected versions

5.*

5.10.46-4
5.10.46-5
5.10.70-1~bpo10+1
5.10.70-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}

Debian:12 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
5.15.15-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}

Debian:13 / linux

Package

Name
linux
Purl
pkg:deb/debian/linux?arch=source

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
5.15.15-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}