CVE-2026-98386: scsi: qla2xxx: Use memset_io() to clear QLAFX00 request ring slot

Published Oct 14, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

scsi: qla2xxx: Use memsetio() to clear QLAFX00 request ring slot

For QLAFX00 the request ring is ioremapped device I/O memory (ha->iobase + reqqueoff), not DMA-coherent RAM, which is why the rest of the FX00 path accesses it through memcpytoio() and the wrtreg helpers. qla2x00allociocbs() however zeroed the producer slot with a plain memset(). On architectures such as ARM64 a regular memset() may emit unaligned or block-zeroing instructions (e.g. DC ZVA) that are invalid on Device memory, leading to a synchronous external abort.

Use memsetio() to clear the slot for QLAFX00, matching the I/O accessors used elsewhere on this ring. Other adapters keep the plain memset() on their DMA-coherent rings. The zero-fill is retained for FX00 because its IOCB builders (e.g. qlafx00fxdisciocb()) copy only part of the entry and rely on the unused tail being pre-zeroed.

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    For QLAFX00, replace the plain memset() used to clear the request ring slot with memset_io(), because the request ring is ioremapped Device memory; retain the existing zero-fill behavior for FX00.

Event History

Oct 14, 2026
CVE Published
via MITRE·01:25 PM
Data Sourced
via MITRE·01:25 PM
Description

Frequently Asked Questions

1

Which systems are affected by this issue?

The issue is specific to QLAFX00 adapters, whose request ring is mapped as device I/O memory. Other adapters use DMA-coherent request rings and retain the existing plain memset() behavior.

2

What conditions can trigger the failure?

The failure can occur when the driver clears a QLAFX00 request-ring producer slot with a normal memset() on architectures where memset() emits operations that are invalid for Device memory, such as ARM64. This can cause a synchronous external abort.

3

Is the zeroing operation safe to remove as a workaround?

No. QLAFX00 IOCB builders may populate only part of an entry and rely on the unused portion having been zero-filled. The required mitigation is to use an I/O-memory-safe clearing operation, memset_io(), rather than removing the zero-fill.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203