CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's handling of DMA buffers, specifically in the `net_devmem_bind_dmabuf()` function, which improperly trusts the size of DMA buffers without ensuring they are page-aligned. This oversight can lead to out-of-bounds memory access, potentially allowing attackers to read or manipulate memory beyond intended boundaries, resulting in data corruption or system crashes. Organizations utilizing Linux systems, particularly those with network functionalities, should prioritize patching this vulnerability to mitigate the risk of exploitation.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: net: devmem: reject dma-buf bind with non-page-aligned size or SG length net_devmem_bind_dmabuf() trusts dmabuf->size and sg_dma_len() to be PAGE_SIZE multiples without checking: - tx_vec is sized dmabuf->size / PAGE_SIZE, and net_devmem_get_niov_at() only bounds-checks virt_addr < dmabuf->size before indexing tx_vec[virt_addr / PAGE_SIZE]. With size = N*PAGE_SIZE + r (1 <= r < PAGE_SIZE), sendmsg() at iov_base = N*PAGE_SIZE passes the bound check and reads tx_vec[N] -- one past. - owner->area.num_niovs = len / PAGE_SIZE while gen_pool_add_owner() covers the full byte len, so a non-page-multiple non-final sg desyncs num_niovs from the gen_pool region for every later sg, on both RX and TX. dma-buf does not require page-aligned sizes, so the bind path has to enforce what its own indexing assumes. Reject both with -EINVAL. The size check is TX-only (only tx_vec is sized off dmabuf->size); the SG-length check covers both directions.
Related CVEs
Other vulnerabilities affecting the same vendor(s)