KernelScan.io

HIGH Introduced in 6.5

verisilicon TileInfo Overflow

CVE-2026-97578

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer rockchip_vpu981_av1_dec_set_tile_info() divides context_update_tile_id by tile_info->tile_cols and writes one descriptor per tile into the tile_info DMA buffer, which holds AV1_MAX_TILES entries; tile_cols and tile_rows come from the bitstream. Guard the division against a zero tile_cols by initialising the context-update values to zero and computing them only when tile_cols is non-zero, and stop the descriptor writes once the tile_info buffer is full. The tile geometry written to the hardware registers is left unmodified; the per-dimension and total tile bounds are enforced by the control validation.

02

Engine v0.6.0

Risk summary

A local attacker with access to a Rockchip VPU981 AV1 hardware decoder can submit a crafted AV1 bitstream that triggers a kernel divide-by-zero crash or overflows the decoder's tile descriptor buffer, corrupting adjacent kernel memory. This can lead to denial of service and potential kernel-level privilege escalation. Only systems with the specific Verisilicon/Rockchip VPU981 hardware (such as RK3588-based devices) are affected, and exploitation requires local access to the video device node.

Affecteddrivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c (Verisilicon Rockchip VPU981 AV1 decoder)

Vulnerability analysis

The AV1 hardware decoder driver reads tile geometry straight from the user-supplied bitstream and uses the column count as a divisor without checking for zero, while also writing one fixed-size descriptor per tile into a preallocated buffer without checking whether that buffer is full. A crafted bitstream with zero tile columns causes a divide-by-zero kernel crash, and one that declares more tiles than the buffer holds overflows it, corrupting adjacent kernel memory. The fix avoids the division when the column count is zero and adds a bounds check that stops the descriptor writes once the tile buffer is full; the tile geometry programmed into the hardware registers is left unchanged because the existing validation already enforces the per-dimension and total tile limits. The vulnerable path is reached by a local process that opens the Verisilicon/Rockchip VPU981 stateless decoder video device node and submits a malicious AV1 bitstream through the V4L2 interface, which requires only ordinary device-node access (typically membership in the video group, not root) and is not network-reachable.

03

BranchIntroducedFixed inPatch commit
6.66.56.6.1588659e5fc21a8
6.126.56.12.1117baa7bb1b784
6.186.56.18.538f19d869a9f6
7.26.57.2.76b7a281a815a
mainline6.57.3-rc3b84f6533a8ed
cip/6.126.56.12.111-cip327baa7bb1b784