---
id: CVE-2022-50457
title: 'mtd: core: Fix refcount error in del_mtd_device()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  mtd: core: Fix refcount error in del_mtd_device()

  del_mtd_device() will call of_node_put() to mtd_get_of_node(mtd), which
  is mtd->dev.of_node. However, memset(&mtd->de…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 63aff1411fc609d737830b79c6b06ce62348c582 <
    0de86087b20675c53fda2bc903dfc26a7ec99856
  - >-
    Linux >= 00596576a05145a1b5672897a82ef87af00becf4 <
    f6016557f1ef7735963bd8691592d2797bbf91d2
  - >-
    Linux >= 00596576a05145a1b5672897a82ef87af00becf4 <
    616dc895d982026f41f500c88d1bfea004938cc8
  - >-
    Linux >= 00596576a05145a1b5672897a82ef87af00becf4 <
    56570bdad5e31c5c538cd6efff5c4510256e1bb4
  - Linux 5.17
published: '2025-10-01'
updated: '2026-10-30'
sourceUpdated: '2026-10-30T12:17:10.412Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2022-50457'
references:
  - url: 'https://git.kernel.org/stable/c/0de86087b20675c53fda2bc903dfc26a7ec99856'
  - url: 'https://git.kernel.org/stable/c/f6016557f1ef7735963bd8691592d2797bbf91d2'
  - url: 'https://git.kernel.org/stable/c/616dc895d982026f41f500c88d1bfea004938cc8'
  - url: 'https://git.kernel.org/stable/c/56570bdad5e31c5c538cd6efff5c4510256e1bb4'
tags:
  - cve.org
epss: 0.00159
epssPercentile: 0.05086
ingestedAt: '2026-11-03T11:43:15.779Z'
---

## Overview

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

mtd: core: Fix refcount error in del_mtd_device()

del_mtd_device() will call of_node_put() to mtd_get_of_node(mtd), which
is mtd->dev.of_node. However, memset(&mtd->dev, 0) is called before
of_node_put(). As the result, of_node_put() won't do anything in
del_mtd_device(), and causes the refcount leak.

del_mtd_device()
    memset(&mtd->dev, 0, sizeof(mtd->dev) # clear mtd->dev
    of_node_put()
        mtd_get_of_node(mtd) # mtd->dev is cleared, can't locate of_node
                             # of_node_put(NULL) won't do anything

Fix the error by caching the pointer of the device_node.

OF: ERROR: memory leak, expected refcount 1 instead of 2,
of_node_get()/of_node_put() unbalanced - destroy cset entry: attach
overlay node /spi/spi-sram@0
CPU: 3 PID: 275 Comm: python3 Tainted: G N 6.1.0-rc3+ #54
    0d8a1edddf51f172ff5226989a7565c6313b08e2
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014
Call Trace:
<TASK>
    dump_stack_lvl+0x67/0x83
    kobject_get+0x155/0x160
    of_node_get+0x1f/0x30
    of_fwnode_get+0x43/0x70
    fwnode_handle_get+0x54/0x80
    fwnode_get_nth_parent+0xc9/0xe0
    fwnode_full_name_string+0x3f/0xa0
    device_node_string+0x30f/0x750
    pointer+0x598/0x7a0
    vsnprintf+0x62d/0x9b0
    ...
    cfs_overlay_release+0x30/0x90
    config_item_release+0xbe/0x1a0
    config_item_put+0x5e/0x80
    configfs_rmdir+0x3bd/0x540
    vfs_rmdir+0x18c/0x320
    do_rmdir+0x198/0x330
    __x64_sys_rmdir+0x2c/0x40
    do_syscall_64+0x37/0x90
    entry_SYSCALL_64_after_hwframe+0x63/0xcd

[<miquel.raynal@bootlin.com>: Light reword of the commit log]

## Affected

- `Linux >= 63aff1411fc609d737830b79c6b06ce62348c582 < 0de86087b20675c53fda2bc903dfc26a7ec99856`
- `Linux >= 00596576a05145a1b5672897a82ef87af00becf4 < f6016557f1ef7735963bd8691592d2797bbf91d2`
- `Linux >= 00596576a05145a1b5672897a82ef87af00becf4 < 616dc895d982026f41f500c88d1bfea004938cc8`
- `Linux >= 00596576a05145a1b5672897a82ef87af00becf4 < 56570bdad5e31c5c538cd6efff5c4510256e1bb4`
- `Linux 5.17`

## Remediation

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