---
id: CVE-2026-98544
title: 'bna: prevent IOC timer rearm during teardown'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  bna: prevent IOC timer rearm during teardown

  bna: prevent IOC timer rearm during teardown

  bnad_pci_remove() and the probe disable_ioceth path call
  timer_delete_sync()…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 <
    28e32ace754b57534ef0ca0fb99bcbea5b13ba2a
  - >-
    Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 <
    4d97a141e85a034566c33c7ed854c8a3e8a268f1
  - >-
    Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 <
    e09d1c6729ee4a7812128902d9274ff565f958b8
  - >-
    Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 <
    77b1718e39e5c9f6956fb60807326af20baf889d
  - Linux 2.6.38
published: '2026-10-18'
updated: '2026-10-19'
sourceUpdated: '2026-10-19T09:21:27.508Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98544'
references:
  - url: 'https://git.kernel.org/stable/c/28e32ace754b57534ef0ca0fb99bcbea5b13ba2a'
  - url: 'https://git.kernel.org/stable/c/4d97a141e85a034566c33c7ed854c8a3e8a268f1'
  - url: 'https://git.kernel.org/stable/c/e09d1c6729ee4a7812128902d9274ff565f958b8'
  - url: 'https://git.kernel.org/stable/c/77b1718e39e5c9f6956fb60807326af20baf889d'
tags:
  - cve.org
ingestedAt: '2026-10-18T15:45:12.267Z'
---

## Overview

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

bna: prevent IOC timer rearm during teardown

bna: prevent IOC timer rearm during teardown

bnad_pci_remove() and the probe disable_ioceth path call
timer_delete_sync() for ioc_timer, sem_timer and hb_timer, but not for
iocpf_timer.  bnad_iocpf_timeout() then takes bnad->bna_lock after
free_netdev() has freed the struct bnad.

Deleting iocpf_timer last does not fix this.  sem_timer and
iocpf_timer rearm each other: bnad_iocpf_sem_timeout() can arm
iocpf_timer, and bnad_iocpf_timeout() arms sem_timer from
bfa_ioc_hw_sem_get() when the semaphore is busy.
timer_delete_sync() only waits out its own callback.
bnad_ioceth_disable() can time out and leave that callback live.

Shut all four IOC timers down with timer_shutdown_sync() on both
paths, so a later mod_timer() is ignored.

This issue was identified during our ongoing static-analysis research
while reviewing kernel code.

## Affected

- `Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 < 28e32ace754b57534ef0ca0fb99bcbea5b13ba2a`
- `Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 < 4d97a141e85a034566c33c7ed854c8a3e8a268f1`
- `Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 < e09d1c6729ee4a7812128902d9274ff565f958b8`
- `Linux >= 1d32f7696286eef9e5644eb57e79a36756274357 < 77b1718e39e5c9f6956fb60807326af20baf889d`
- `Linux 2.6.38`

## Remediation

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