---
id: CVE-2026-98748
title: 'serial: 8250_bcm7271: fix use-after-free in brcmuart_remove()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  serial: 8250_bcm7271: fix use-after-free in brcmuart_remove()

  brcmuart_handle_irq() starts priv->hrt to work around a receive-timeout
  quirk of the 8250 core when hardw…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 41a469482de257ea8db43cf74b6311bd055de030 <
    f5ce06e648d775cc1ccf66f4f594bb8b559a7d8e
  - >-
    Linux >= 41a469482de257ea8db43cf74b6311bd055de030 <
    e32440fa536af96bdbc61d933a7c3a920b965edc
  - >-
    Linux >= 41a469482de257ea8db43cf74b6311bd055de030 <
    0794ba5332754866b2f1c0cca668775be3ffcf0a
  - >-
    Linux >= 41a469482de257ea8db43cf74b6311bd055de030 <
    189b9dc8c96ec9486482f27c1372b04a7152175e
  - Linux 5.13
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:47:33.446Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98748'
references:
  - url: 'https://git.kernel.org/stable/c/f5ce06e648d775cc1ccf66f4f594bb8b559a7d8e'
  - url: 'https://git.kernel.org/stable/c/e32440fa536af96bdbc61d933a7c3a920b965edc'
  - url: 'https://git.kernel.org/stable/c/0794ba5332754866b2f1c0cca668775be3ffcf0a'
  - url: 'https://git.kernel.org/stable/c/189b9dc8c96ec9486482f27c1372b04a7152175e'
tags:
  - cve.org
ingestedAt: '2026-10-18T16:47:32.500Z'
---

## Overview

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

serial: 8250_bcm7271: fix use-after-free in brcmuart_remove()

brcmuart_handle_irq() starts priv->hrt to work around a receive-timeout
quirk of the 8250 core when hardware flow control is enabled; the timer
callback brcmuart_hrtimer_func() dereferences priv.

brcmuart_remove() cancels the hrtimer before it unregisters the port, so
a receive-timeout interrupt that arrives in between re-arms the timer.
After devm frees priv, the callback runs on freed memory.

Unregister the port before cancelling the hrtimer.
serial8250_unregister_port() shuts the port down and frees its IRQ, so
brcmuart_handle_irq() can no longer restart the timer, and the final
hrtimer_cancel() drains any timer that was armed before or during the
unregister.

This issue was found by an in-house static analysis tool.

## Affected

- `Linux >= 41a469482de257ea8db43cf74b6311bd055de030 < f5ce06e648d775cc1ccf66f4f594bb8b559a7d8e`
- `Linux >= 41a469482de257ea8db43cf74b6311bd055de030 < e32440fa536af96bdbc61d933a7c3a920b965edc`
- `Linux >= 41a469482de257ea8db43cf74b6311bd055de030 < 0794ba5332754866b2f1c0cca668775be3ffcf0a`
- `Linux >= 41a469482de257ea8db43cf74b6311bd055de030 < 189b9dc8c96ec9486482f27c1372b04a7152175e`
- `Linux 5.13`

## Remediation

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