---
id: CVE-2026-99189
title: 'gpio: mxc: fix race between chained IRQ handler install and probe completion'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  gpio: mxc: fix race between chained IRQ handler install and probe completion

  mxc_update_irq_chained_handler() is called before the IRQ domain, the
  generic IRQ chip, an…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 5f6d1998adeb5374ef248b5ba2e2a0c30ab0f60b <
    261802c14e1a3281987ea8f106701e5ed9652f68
  - >-
    Linux >= 5f6d1998adeb5374ef248b5ba2e2a0c30ab0f60b <
    6c1e035d881579a6e4ed1ce5feabb13d23e80a82
  - >-
    Linux >= 5f6d1998adeb5374ef248b5ba2e2a0c30ab0f60b <
    38d44f78f041ffe60c8e2443b99434a199e7541d
  - Linux 6.6
published: '2026-10-28'
updated: '2026-10-28'
sourceUpdated: '2026-10-28T10:35:46.366Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99189'
references:
  - url: 'https://git.kernel.org/stable/c/261802c14e1a3281987ea8f106701e5ed9652f68'
  - url: 'https://git.kernel.org/stable/c/6c1e035d881579a6e4ed1ce5feabb13d23e80a82'
  - url: 'https://git.kernel.org/stable/c/38d44f78f041ffe60c8e2443b99434a199e7541d'
tags:
  - cve.org
ingestedAt: '2026-10-28T11:09:40.375Z'
---

## Overview

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

gpio: mxc: fix race between chained IRQ handler install and probe completion

mxc_update_irq_chained_handler() is called before the IRQ domain, the
generic IRQ chip, and the port list entry are set up. If an interrupt
arrives in that window:

 - mx3_gpio_irq_handler() calls generic_handle_domain_irq() with
   port->domain still NULL.
 - mx2_gpio_irq_handler() walks mxc_gpio_ports, but the port has not
   been added to the list yet.

Additionally, if any of the subsequent probe steps
(gpio_generic_chip_init(), devm_gpiochip_add_data(),
irq_domain_create_legacy(), or mxc_gpio_init_gc()) fail, the error
paths never unregister the chained handler, leaving a dangling handler
that points at freed memory.

Move the handler installation after all its dependencies are ready and
after list_add_tail(), so the handler is never live while the data
structures it touches are incomplete, and is never installed if probe
fails.

## Affected

- `Linux >= 5f6d1998adeb5374ef248b5ba2e2a0c30ab0f60b < 261802c14e1a3281987ea8f106701e5ed9652f68`
- `Linux >= 5f6d1998adeb5374ef248b5ba2e2a0c30ab0f60b < 6c1e035d881579a6e4ed1ce5feabb13d23e80a82`
- `Linux >= 5f6d1998adeb5374ef248b5ba2e2a0c30ab0f60b < 38d44f78f041ffe60c8e2443b99434a199e7541d`
- `Linux 6.6`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
