[PATCH] scsi: mpt3sas: clamp ValidEntries in driver trigger pg2 store
From: Weibin Liu
Date: Wed Oct 14 2026 - 22:07:31 EST
The driver trigger page 2 store path copies the user-supplied
event_tg->ValidEntries directly into tg_pg2.NumMPIEventTrigger and
then iterates over it while filling MPIEventTriggers[]. The array
holds NUM_VALID_ENTRIES (20) entries, so a ValidEntries value larger
than that causes an out-of-bounds read of event_tg->EventTriggerEntry[]
and an out-of-bounds write into the on-stack tg_pg2 structure.
The local copy of the trigger data is only clamped later inside
diag_trigger_event(), which is too late for this path.
Clamp count to NUM_VALID_ENTRIES before using it as the loop bound
and when programming NumMPIEventTrigger.
Reviewed-by: Liu Chao <liuc63@xxxxxxxxxxxx>
Fixes: 71b3fb8fe6dd ("scsi: mpt3sas: Add persistent Event trigger page")
Cc: stable@xxxxxxxxxxxxxxx # 5.11+
Signed-off-by: Weibin Liu <liuwb@xxxxxxxxxxxx>
---
drivers/scsi/mpt3sas/mpt3sas_config.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_config.c b/drivers/scsi/mpt3sas/mpt3sas_config.c
index b0d5ef893600..62999682ce95 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_config.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_config.c
@@ -2278,6 +2278,8 @@ mpt3sas_config_update_driver_trigger_pg2(struct MPT3SAS_ADAPTER *ioc,
if (set) {
count = event_tg->ValidEntries;
+ if (count > NUM_VALID_ENTRIES)
+ count = NUM_VALID_ENTRIES;
tg_pg2.NumMPIEventTrigger = cpu_to_le16(count);
for (i = 0; i < count; i++) {
tg_pg2.MPIEventTriggers[i].MPIEventCode =
---
base-commit: 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907
change-id: 20261015-mpt3sas-validentries-b7c58d8b3966
Best regards,
--
Weibin Liu <liuwb@xxxxxxxxxxxx>