---
id: CVE-2021-46974
title: |-
  In the Linux kernel, the following vulnerability has been resolved:

  bpf: Fix masking negation logic upon negative dst register

  The negation logic for the case where the off_reg is sitting in the
  dst register is not correct given then w…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  bpf: Fix masking negation logic upon negative dst register

  The negation logic for the case where the off_reg is sitting in the
  dst register is not correct given then w…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H'
vendor: linux
product: linux_kernel
affected:
  - 'linux_kernel >= 4.14.113, < 4.14.233'
  - 'linux_kernel >= 4.19.19, < 4.19.190'
  - 'linux_kernel >= 5.0, < 5.4.117'
  - 'linux_kernel >= 5.5, < 5.10.35'
  - 'linux_kernel >= 5.11, < 5.11.19'
  - 'linux_kernel >= 5.12, < 5.12.2'
patched:
  - linux_kernel 5.12.2
published: '2024-02-27'
updated: '2026-08-04'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2021-46974'
references:
  - url: 'https://git.kernel.org/stable/c/0e2dfdc74a7f4036127356d42ea59388f153f42c'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/2cfa537674cd1051a3b8111536d77d0558f33d5d'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/4d542ddb88fb2f39bf7f14caa2902f3e8d06f6ba'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/53e0db429b37a32b8fc706d0d90eb4583ad13848'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/6eba92a4d4be8feb4dc33976abac544fa99d6ecc'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/7cf64d8679ca1cb20cf57d6a88bfee79a0922a66'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/b9b34ddbe2076ade359cd5ce7537d5ed019e9807'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/0e2dfdc74a7f4036127356d42ea59388f153f42c'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://git.kernel.org/stable/c/2cfa537674cd1051a3b8111536d77d0558f33d5d'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://git.kernel.org/stable/c/4d542ddb88fb2f39bf7f14caa2902f3e8d06f6ba'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://git.kernel.org/stable/c/53e0db429b37a32b8fc706d0d90eb4583ad13848'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://git.kernel.org/stable/c/6eba92a4d4be8feb4dc33976abac544fa99d6ecc'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://git.kernel.org/stable/c/7cf64d8679ca1cb20cf57d6a88bfee79a0922a66'
    label: af854a3a-2127-422b-91ae-364da2661108
  - url: 'https://git.kernel.org/stable/c/b9b34ddbe2076ade359cd5ce7537d5ed019e9807'
    label: af854a3a-2127-422b-91ae-364da2661108
tags:
  - nvd
epss: 0.00247
epssPercentile: 0.14267
ingestedAt: '2026-08-04T10:39:38.704Z'
---

## Overview

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

bpf: Fix masking negation logic upon negative dst register

The negation logic for the case where the off_reg is sitting in the
dst register is not correct given then we cannot just invert the add
to a sub or vice versa. As a fix, perform the final bitwise and-op
unconditionally into AX from the off_reg, then move the pointer from
the src to dst and finally use AX as the source for the original
pointer arithmetic operation such that the inversion yields a correct
result. The single non-AX mov in between is possible given constant
blinding is retaining it as it's not an immediate based operation.

## Affected

- `linux_kernel >= 4.14.113, < 4.14.233`
- `linux_kernel >= 4.19.19, < 4.19.190`
- `linux_kernel >= 5.0, < 5.4.117`
- `linux_kernel >= 5.5, < 5.10.35`
- `linux_kernel >= 5.11, < 5.11.19`
- `linux_kernel >= 5.12, < 5.12.2`

## Remediation

Upgrade past the affected range:

- `linux_kernel 5.12.2`
