---
id: CVE-2026-98851
title: 'netfilter: nft_flow_offload: drop flowtable reference on init error path'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  netfilter: nft_flow_offload: drop flowtable reference on init error path

  nft_flow_offload_init() bumps the flowtable use count with
  nft_use_inc() before calling nf_ct_…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 <
    64ac0cb574c740bf723affb79b646eeba920db6b
  - >-
    Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 <
    c5f91098edee98c015f78488460a0609e62582a5
  - >-
    Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 <
    4cd378423a33194a773c267fc58606d28fce95cf
  - >-
    Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 <
    747928b5d4ff8c8de55138a54c13980e4bb88578
  - Linux 4.16
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:50:50.910Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98851'
references:
  - url: 'https://git.kernel.org/stable/c/64ac0cb574c740bf723affb79b646eeba920db6b'
  - url: 'https://git.kernel.org/stable/c/c5f91098edee98c015f78488460a0609e62582a5'
  - url: 'https://git.kernel.org/stable/c/4cd378423a33194a773c267fc58606d28fce95cf'
  - url: 'https://git.kernel.org/stable/c/747928b5d4ff8c8de55138a54c13980e4bb88578'
tags:
  - cve.org
ingestedAt: '2026-10-18T16:47:32.463Z'
---

## Overview

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

netfilter: nft_flow_offload: drop flowtable reference on init error path

nft_flow_offload_init() bumps the flowtable use count with
nft_use_inc() before calling nf_ct_netns_get().  When the latter
fails, the error is returned as-is and the reference is leaked.

The upper layers do not balance it either: nf_tables_newexpr()
clears expr->ops when the expression init callback fails, so the
nft_expr_more() iteration in nft_rule_expr_deactivate() and
nf_tables_rule_destroy() stops right before the failed expression
and its ->destroy callback, which would drop the reference, never
runs.

Each failed rule addition therefore leaks one flowtable reference
and the flowtable can no longer be removed: NFT_MSG_DELFLOWTABLE
keeps reporting -EBUSY even though no rule references it.

Save the nf_ct_netns_get() return value and undo the nft_use_inc()
when it fails, restoring the inc/dec pairing within
nft_flow_offload_init() itself.

## Affected

- `Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 < 64ac0cb574c740bf723affb79b646eeba920db6b`
- `Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 < c5f91098edee98c015f78488460a0609e62582a5`
- `Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 < 4cd378423a33194a773c267fc58606d28fce95cf`
- `Linux >= a3c90f7a2323b331ae816d5b0633e68148e25d04 < 747928b5d4ff8c8de55138a54c13980e4bb88578`
- `Linux 4.16`

## Remediation

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