[PATCH 0/3] scsi: arcmsr: bound adapter-supplied completion indices and message lengths

From: Yehyeong Lee

Date: Mon Oct 12 2026 - 03:38:48 EST


The arcmsr completion and message paths take several values straight
from the DMA area the adapter writes -- a completion slot number, a
type B completion-ring index, and an inbound message length -- and use
them as array subscripts or copy lengths without checking them against
the array or buffer they index. A malfunctioning or malicious adapter
can therefore drive an out-of-bounds access from the completion
interrupt or an ioctl.

Patch 1 clamps the firmware-supplied message length to the staging
window (heap out-of-bounds write). Patch 2 rejects a completion slot
the driver never handed out (wild pointer load and dereference on types
E and F). Patch 3 wraps the type B completion index before it is used
(out-of-bounds read, and an out-of-bounds store when the word read is
non-zero).

Each was reproduced on a KASAN build with a crafted DMA area; the
per-patch changelogs have the reports. The three are independent and
carry separate Fixes tags.

Yehyeong Lee (3):
scsi: arcmsr: bound the firmware-supplied message length
scsi: arcmsr: check the completion index the adapter reports
scsi: arcmsr: wrap the type B completion index before using it

drivers/scsi/arcmsr/arcmsr_hba.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)

--
2.43.0