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

  crypto: ecdsa - Harden against integer overflows in DIV_ROUND_UP()

  Herbert notes that DIV_ROUND_UP() may overflow unnecessarily if an ecdsa
  implementation's ->key_size…
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  crypto: ecdsa - Harden against integer overflows in DIV_ROUND_UP()

  Herbert notes that DIV_ROUND_UP() may overflow unnecessarily if an ecdsa
  implementation's ->key_size…
severity: high
cvss: 7
cvssVector: 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'
cwe:
  - CWE-190
vendor: linux
product: linux_kernel
affected:
  - 'linux_kernel >= 6.6.70, < 6.6.99'
  - 'linux_kernel >= 6.10, < 6.12.39'
  - 'linux_kernel >= 6.13, < 6.14.5'
patched:
  - linux_kernel 6.14.5
published: '2025-05-20'
updated: '2026-10-15'
sourceUpdated: '2026-10-15T22:18:23.410'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2025-37984'
references:
  - url: 'https://git.kernel.org/stable/c/921b8167f10708e38080f84e195cdc68a7a561f1'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/b16510a530d1e6ab9683f04f8fb34f2e0f538275'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/f02f0218be412cff1c844addf58e002071be298b'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/f2133b849ff273abddb6da622daddd8f6f6fa448'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
  - cve.org
epss: 0.00189
epssPercentile: 0.0845
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-10-15T21:46:35.354551Z'
ingestedAt: '2026-10-15T22:48:25.487Z'
---

## Overview

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

crypto: ecdsa - Harden against integer overflows in DIV_ROUND_UP()

Herbert notes that DIV_ROUND_UP() may overflow unnecessarily if an ecdsa
implementation's ->key_size() callback returns an unusually large value.
Herbert instead suggests (for a division by 8):

  X / 8 + !!(X & 7)

Based on this formula, introduce a generic DIV_ROUND_UP_POW2() macro and
use it in lieu of DIV_ROUND_UP() for ->key_size() return values.

Additionally, use the macro in ecc_digits_from_bytes(), whose "nbytes"
parameter is a ->key_size() return value in some instances, or a
user-specified ASN.1 length in the case of ecdsa_get_signature_rs().

## Affected

- `linux_kernel >= 6.6.70, < 6.6.99`
- `linux_kernel >= 6.10, < 6.12.39`
- `linux_kernel >= 6.13, < 6.14.5`

## Remediation

Upgrade past the affected range:

- `linux_kernel 6.14.5`
