CVE-2021-46988

Source
https://nvd.nist.gov/vuln/detail/CVE-2021-46988
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2021-46988.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2021-46988
Related
Published
2024-02-28T09:15:37Z
Modified
2024-09-11T02:00:04Z
Summary
[none]
Details

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

userfaultfd: release page in error path to avoid BUG_ON

Consider the following sequence of events:

  1. Userspace issues a UFFD ioctl, which ends up calling into shmemmfillatomicpte(). We successfully account the blocks, we shmemallocpage(), but then the copyfrom_user() fails. We return -ENOENT. We don't release the page we allocated.
  2. Our caller detects this error code, tries the copyfromuser() after dropping the mmaplock, and retries, calling back into shmemmfillatomicpte().
  3. Meanwhile, let's say another process filled up the tmpfs being used.
  4. So shmemmfillatomic_pte() fails to account blocks this time, and immediately returns - without releasing the page.

This triggers a BUG_ON in our caller, which asserts that the page should always be consumed, unless -ENOENT is returned.

To fix this, detect if we have such a "dangling" page when accounting fails, and if so, release it before returning.

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.38-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.10.38-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.10.38-1

Ecosystem specific

{
    "urgency": "not yet assigned"
}