---
id: CVE-2026-74740
title: 'net/sched: act_api: fix TOCTOU NULL deref on a->goto_chain'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  net/sched: act_api: fix TOCTOU NULL deref on a->goto_chain

  tcf_action_exec() handles TC_ACT_GOTO_CHAIN by first checking
  rcu_access_pointer(a->goto_chain) and then cal…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 <
    28aa0c9dd0b1b38436995d4c15621ad3f896c7e3
  - >-
    Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 <
    91d55fd1fdb85c8371ca8793c788ea7d5192383a
  - >-
    Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 <
    1ec48b6715c29b20105e3485206602cff6c51ae5
  - >-
    Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 <
    abceabc4408fca6a9dd52611f5d197dec9390d63
  - >-
    Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 <
    6b70886ebc428eed43a069c8944a931b5fb3f4e4
  - >-
    Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 <
    f60b396ee174206fe08ebf997d16cd3801b77b22
  - Linux 5.1
published: '2026-08-26'
updated: '2026-10-30'
sourceUpdated: '2026-10-30T12:30:29.380Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-74740'
references:
  - url: 'https://git.kernel.org/stable/c/28aa0c9dd0b1b38436995d4c15621ad3f896c7e3'
  - url: 'https://git.kernel.org/stable/c/91d55fd1fdb85c8371ca8793c788ea7d5192383a'
  - url: 'https://git.kernel.org/stable/c/1ec48b6715c29b20105e3485206602cff6c51ae5'
  - url: 'https://git.kernel.org/stable/c/abceabc4408fca6a9dd52611f5d197dec9390d63'
  - url: 'https://git.kernel.org/stable/c/6b70886ebc428eed43a069c8944a931b5fb3f4e4'
  - url: 'https://git.kernel.org/stable/c/f60b396ee174206fe08ebf997d16cd3801b77b22'
tags:
  - cve.org
epss: 0.00181
epssPercentile: 0.07708
ingestedAt: '2026-11-05T15:02:32.579Z'
---

## Overview

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

net/sched: act_api: fix TOCTOU NULL deref on a->goto_chain

tcf_action_exec() handles TC_ACT_GOTO_CHAIN by first checking
rcu_access_pointer(a->goto_chain) and then calling
tcf_action_goto_chain_exec(), which does a second, independent
rcu_dereference_bh(a->goto_chain) read and immediately dereferences
chain->filter_chain. A concurrent tcf_action_set_ctrlact() (e.g. the gact
replace path) can clear a->goto_chain between the two reads, so the second
read returns NULL and tcf_action_goto_chain_exec() dereferences NULL.

Fix the race by doing a single rcu_dereference_bh() read of a->goto_chain
in tcf_action_exec(), checking it once for NULL, and passing the resulting
chain pointer into tcf_action_goto_chain_exec(). This turns the split
check/use into a single check/use on one value.

## Affected

- `Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 < 28aa0c9dd0b1b38436995d4c15621ad3f896c7e3`
- `Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 < 91d55fd1fdb85c8371ca8793c788ea7d5192383a`
- `Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 < 1ec48b6715c29b20105e3485206602cff6c51ae5`
- `Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 < abceabc4408fca6a9dd52611f5d197dec9390d63`
- `Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 < 6b70886ebc428eed43a069c8944a931b5fb3f4e4`
- `Linux >= ee3bbfe806cdb46b02cda63626cb50a7a7b19fc5 < f60b396ee174206fe08ebf997d16cd3801b77b22`
- `Linux 5.1`

## Remediation

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