CVE-2021-46988

userfaultfd: release page in error path to avoid BUG_ON

State
Published
Severity
Not scored
Published
Feb 28, 2024
Updated
May 11, 2026
Reserved
Feb 27, 2024

Read the record on cve.org

Description

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 shmem_mfill_atomic_pte(). We successfully account the blocks, we shmem_alloc_page(), but then the copy_from_user() fails. We return -ENOENT. We don't release the page we allocated. 2. Our caller detects this error code, tries the copy_from_user() after dropping the mmap_lock, and retries, calling back into shmem_mfill_atomic_pte(). 3. Meanwhile, let's say another process filled up the tmpfs being used. 4. So shmem_mfill_atomic_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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before 319116227e52d49eee671f0aa278bac89b3c1b69Affected
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before 07c9b834c97d0fa3402fb7f3f3b32df370a6ff1fAffected
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before b3f1731c6d7fbc1ebe3ed8eff6d6bec56d76ff43Affected
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before 140cfd9980124aecb6c03ef2e69c72d0548744deAffected
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before ad53127973034c63b5348715a1043d0e80ceb330Affected
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before 2d59a0ed8b26b8f3638d8afc31f839e27759f1f6Affected
  • cb658a453b9327ce96ce5222c24d162b5b65b564 to before 7ed9d238c7dbb1fdb63ad96a6184985151b0171cAffected
LinuxLinux
  • 4.11Affected
  • before 4.11Not affected
  • 4.14.233 through 4.14.*Not affected
  • 4.19.191 through 4.19.*Not affected
  • 5.4.120 through 5.4.*Not affected
  • 5.10.38 through 5.10.*Not affected
  • 5.11.22 through 5.11.*Not affected
  • 5.12.5 through 5.12.*Not affected
  • 5.13 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.