tee: shm: reject zero-sized allocations in tee_dyn_shm_alloc_helper()
Impact
In the Linux kernel, the following vulnerability has been resolved:
Source excerpt · LinuxAffected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
Linux · Linux
Other versions: unaffected
| Version / range | Source status |
|---|---|
| cf4441503e20a0c0a36e0a98dcf57de3d3844c91 to before e5dc7af9c3a5373ee7a84959126e7dfa9e4ad50d | affected |
| cf4441503e20a0c0a36e0a98dcf57de3d3844c91 to before 65cb86860a80ffc6af897d53f5bd4b1733bca0ec | affected |
| cf4441503e20a0c0a36e0a98dcf57de3d3844c91 to before c2a97703359e25ec7ef8b2b0ef32fb3982add90a | affected |
| cf4441503e20a0c0a36e0a98dcf57de3d3844c91 to before b7f925fd5226deb953c8dcdc9677d3fcc2717c00 | affected |
Linux · Linux
Other versions: affected
| Version / range | Source status |
|---|---|
| 6.10 | affected |
| 0 to before 6.10 | unaffected |
| 6.12.113 through 6.12.* (inclusive) | unaffected |
| 6.18.57 through 6.18.* (inclusive) | unaffected |
| 7.2.11 through 7.2.* (inclusive) | unaffected |
| 7.3 through * (inclusive) | unaffected |
Original source description
In the Linux kernel, the following vulnerability has been resolved:
tee: shm: reject zero-sized allocations in tee_dyn_shm_alloc_helper()
tee_dyn_shm_alloc_helper() derives nr_pages from a caller-supplied size and passes it to alloc_pages_exact() without checking it. For size == 0 nr_pages is 0, and alloc_pages_exact(0) calls get_order(0), which is documented as undefined and returns BITS_PER_LONG - PAGE_SHIFT. The page allocator then trips its order > MAX_PAGE_ORDER warning and fails the allocation; on a panic_on_warn kernel that ends the boot.
This can be triggered by TEE_IOC_SHM_ALLOC with struct tee_ioctl_shm_alloc_data where size is 0.
Reject a zero page count, as register_shm_helper() already does for the register path.
References
- Source reference git.kernel.org/stable/c/e5dc7af9c3a5373ee7a84959126e7dfa9e4ad50d
- Source reference git.kernel.org/stable/c/65cb86860a80ffc6af897d53f5bd4b1733bca0ec
- Source reference git.kernel.org/stable/c/c2a97703359e25ec7ef8b2b0ef32fb3982add90a
- Source reference git.kernel.org/stable/c/b7f925fd5226deb953c8dcdc9677d3fcc2717c00