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

  can: j1939: implement NETDEV_UNREGISTER notification handler

  syzbot is reporting

    unregister_netdevice: waiting for vcan0 to become free
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  can: j1939: implement NETDEV_UNREGISTER notification handler

  syzbot is reporting

    unregister_netdevice: waiting for vcan0 to become free. Usage count = 2

  problem, f…
severity: medium
cvss: 5.5
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H'
vendor: linux
product: linux_kernel
affected:
  - 'linux_kernel >= 5.4, < 6.16.8'
  - linux_kernel = 6.17
patched:
  - linux_kernel 6.16.8
published: '2025-10-01'
updated: '2026-09-02'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2025-39925'
references:
  - url: 'https://git.kernel.org/stable/c/2c88069fac2c792e228e6a4ae71c9b9b5b9a87a6'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/479d8a2aedcc1db16f14c1a8a9c74b5bdf18b9ac'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/4e154cb5e7681c2910e2dfa09f05e3469e333745'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/76957b618ce729c3bd1e782fbc9d9991af653925'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/7fcbe5b2c6a4b5407bf2241fdb71e0a390f6ab9a'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
  - url: 'https://git.kernel.org/stable/c/da9e8f429139928570407e8f90559b5d46c20262'
    label: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
tags:
  - nvd
epss: 0.00147
epssPercentile: 0.03231
ingestedAt: '2026-09-02T13:44:41.090Z'
---

## Overview

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

can: j1939: implement NETDEV_UNREGISTER notification handler

syzbot is reporting

  unregister_netdevice: waiting for vcan0 to become free. Usage count = 2

problem, for j1939 protocol did not have NETDEV_UNREGISTER notification
handler for undoing changes made by j1939_sk_bind().

Commit 25fe97cb7620 ("can: j1939: move j1939_priv_put() into sk_destruct
callback") expects that a call to j1939_priv_put() can be unconditionally
delayed until j1939_sk_sock_destruct() is called. But we need to call
j1939_priv_put() against an extra ref held by j1939_sk_bind() call
(as a part of undoing changes made by j1939_sk_bind()) as soon as
NETDEV_UNREGISTER notification fires (i.e. before j1939_sk_sock_destruct()
is called via j1939_sk_release()). Otherwise, the extra ref on "struct
j1939_priv" held by j1939_sk_bind() call prevents "struct net_device" from
dropping the usage count to 1; making it impossible for
unregister_netdevice() to continue.

[mkl: remove space in front of label]

## Affected

- `linux_kernel >= 5.4, < 6.16.8`
- `linux_kernel = 6.17`

## Remediation

Upgrade past the affected range:

- `linux_kernel 6.16.8`
