Skip to content
Fencer Vulns
medium 5.5

CVE-2021-47592 json

net: stmmac: fix tc flower deletion for VLAN priority Rx steering

published 2024-06-19 2 y ago modified 2026-06-17 4 mo ago also EUVD-2021-34594

cvss
5.5
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.2%
EPSS 0.2% chance of exploitation in 30 days, percentile 10%
public exploits
0
none known

Summary

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

net: stmmac: fix tc flower deletion for VLAN priority Rx steering

To replicate the issue:-

1) Add 1 flower filter for VLAN Priority based frame steering:- $ IFDEVNAME=eth0 $ tc qdisc add dev $IFDEVNAME ingress $ tc qdisc add dev $IFDEVNAME root mqprio num_tc 8 \ map 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 \ queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 hw 0 $ tc filter add dev $IFDEVNAME parent ffff: protocol 802.1Q \ flower vlan_prio 0 hw_tc 0

2) Get the 'pref' id $ tc filter show dev $IFDEVNAME ingress

3) Delete a specific tc flower record (say pref 49151) $ tc filter del dev $IFDEVNAME parent ffff: pref 49151

From dmesg, we will observe kernel NULL pointer ooops

[ 197.170464] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 197.171367] #PF: supervisor read access in kernel mode [ 197.171367] #PF: error_code(0x0000) - not-present page [ 197.171367] PGD 0 P4D 0 [ 197.171367] Oops: 0000 [#1] PREEMPT SMP NOPTI

<snip>

[ 197.171367] RIP: 0010:tc_setup_cls+0x20b/0x4a0 [stmmac]

<snip>

[ 197.171367] Call Trace: [ 197.171367] <TASK> [ 197.171367] ? __stmmac_disable_all_queues+0xa8/0xe0 [stmmac] [ 197.171367] stmmac_setup_tc_block_cb+0x70/0x110 [stmmac] [ 197.171367] tc_setup_cb_destroy+0xb3/0x180 [ 197.171367] fl_hw_destroy_filter+0x94/0xc0 [cls_flower]

The above issue is due to previous incorrect implementation of tc_del_vlan_flow(), shown below, that uses flow_cls_offload_flow_rule() to get struct flow_rule *rule which is no longer valid for tc filter delete operation.

struct flow_rule *rule = flow_cls_offload_flow_rule(cls); struct flow_dissector *dissector = rule->match.dissector;

So, to ensure tc_del_vlan_flow() deletes the right VLAN cls record for earlier configured RX queue (configured by hw_tc) in tc_add_vlan_flow(), this patch introduces stmmac_rfs_entry as driver-side flow_cls_offload record for 'RX frame steering' tc flower, currently used for VLAN priority. The implementation has taken consideration for future extension to include other type RX frame steering such as EtherType based.

v2: - Clean up overly extensive backtrace and rewrite git message to better explain the kernel NULL pointer issue.

Patch / fix

  • Linux Linux 5.15.11, 5.16
  • linux Debian 14, Debian 13, Debian 12 5.15.15-1

debian advisories DEBIAN-CVE-2021-47592

  • kernel RHEL 9 5.14.0-284.11.1.el9_2
  • perf RHEL 9 5.14.0-284.11.1.el9_2
  • rtla RHEL 9 5.14.0-284.11.1.el9_2
  • bpftool RHEL 9 7.0.0-284.11.1.el9_2
  • kernel-64k RHEL 9 5.14.0-284.11.1.el9_2
  • kernel-core RHEL 9 5.14.0-284.11.1.el9_2
  • kernel-tools RHEL 9 5.14.0-284.11.1.el9_2
  • python3-perf RHEL 9 5.14.0-284.11.1.el9_2

red hat advisories RHSA-2023:2458RHSA-2023:2148RHSA-2023:2736RHSA-2023:2951

  • dtb-aarch64 openSUSE Leap 15.5 5.14.21-150500.55.73.1
  • kernel-64kb SLE Module for Basesystem 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.73.1
  • kernel-syms SLE Module for Development Tools 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.73.1
  • kernel-obs-qa openSUSE Leap 15.5 5.14.21-150500.55.73.1
  • kernel-source SLE Module for Development Tools 15 SP5, SLE Module for Basesystem 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.73.1
  • kernel-default SLE Workstation Extension 15 SP5, SLE Module for Legacy 15 SP5, SLE Module for Basesystem 15 SP5 +5 more 5.14.21-150500.55.73.1
  • kernel-kvmsmall openSUSE Leap 15.5 5.14.21-150500.55.73.1
  • kernel-zfcpdump SLE Module for Basesystem 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.73.1

suse advisories SUSE-SU-2024:2939-1SUSE-SU-2024:2929-1SUSE-SU-2024:2902-1SUSE-SU-2024:2394-1SUSE-SU-2024:2372-1

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2021-47592 updated cvss 4.4

kernel: net: stmmac: fix tc flower deletion for VLAN priority Rx steering

  • Red Hat Enterprise Linux AppStream (v. 9) perf 5.14.0-284.11.1.el9_2, rtla 5.14.0-284.11.1.el9_2, kernel-devel-matched 5.14.0-284.11.1.el9_2, kernel-64k-devel-matched 5.14.0-284.11.1.el9_2, kernel-debug-devel-matched 5.14.0-284.11.1.el9_2, kernel-debuginfo-common-s390x 5.14.0-284.11.1.el9_2, +5 more
    fixed: vendor fix RHSA-2023:2458
  • Red Hat Enterprise Linux BaseOS (v. 8) perf 4.18.0-477.10.1.el8_8, kernel 4.18.0-477.10.1.el8_8, bpftool 4.18.0-477.10.1.el8_8, kernel-core 4.18.0-477.10.1.el8_8, kernel-tools 4.18.0-477.10.1.el8_8, python3-perf 4.18.0-477.10.1.el8_8, +15 more
    fixed: vendor fix RHSA-2023:2951
  • Red Hat Enterprise Linux BaseOS (v. 9) bpftool 7.0.0-284.11.1.el9_2, kernel 5.14.0-284.11.1.el9_2, kernel-64k 5.14.0-284.11.1.el9_2, kernel-core 5.14.0-284.11.1.el9_2, kernel-tools 5.14.0-284.11.1.el9_2, python3-perf 5.14.0-284.11.1.el9_2, +28 more
    fixed: vendor fix RHSA-2023:2458
  • Red Hat Enterprise Linux CRB (v. 8) kernel-debuginfo-common-x86_64 4.18.0-477.10.1.el8_8, kernel-debuginfo-common-aarch64 4.18.0-477.10.1.el8_8, kernel-debuginfo-common-ppc64le 4.18.0-477.10.1.el8_8
    fixed: vendor fix RHSA-2023:2951
  • Red Hat Enterprise Linux CRB (v. 9) kernel-debuginfo-common-s390x 5.14.0-284.11.1.el9_2, kernel-debuginfo-common-x86_64 5.14.0-284.11.1.el9_2, kernel-debuginfo-common-aarch64 5.14.0-284.11.1.el9_2, kernel-debuginfo-common-ppc64le 5.14.0-284.11.1.el9_2
    fixed: vendor fix RHSA-2023:2458
  • Red Hat Enterprise Linux NFV (v. 8) kernel-rt 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-kvm 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-core 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-modules 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-debug-kvm 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-debug-core 4.18.0-477.10.1.rt7.274.el8_8, +4 more
    fixed: vendor fix RHSA-2023:2736
  • Red Hat Enterprise Linux NFV (v. 9) kernel-rt 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-kvm 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-core 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-modules 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-debug-kvm 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-debug-core 5.14.0-284.11.1.rt14.296.el9_2, +6 more
    fixed: vendor fix RHSA-2023:2148
  • Red Hat Enterprise Linux RT (v. 8) kernel-rt 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-core 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-modules 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-debug-core 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-debug-modules 4.18.0-477.10.1.rt7.274.el8_8, kernel-rt-modules-extra 4.18.0-477.10.1.rt7.274.el8_8, +2 more
    fixed: vendor fix RHSA-2023:2736
show 2 more
  • Red Hat Enterprise Linux RT (v. 9) kernel-rt 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-core 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-modules 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-debug-core 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-modules-core 5.14.0-284.11.1.rt14.296.el9_2, kernel-rt-debug-modules 5.14.0-284.11.1.rt14.296.el9_2, +4 more
    fixed: vendor fix RHSA-2023:2148
  • Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

CISA SSVC

Exploitation
none
Automatable
no
Technical impact
partial
Assessed
2 y ago

Exploit prediction

0.21% chance of exploitation in the next 30 days, higher than 10% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CISA ADP 3.1 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
NVD 3.1 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CNA 3.1 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected products

  • Linux Linux

Classification

Weakness
Technology feeds

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.