{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2022-50283",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-09-15T13:58:00.976Z",
        "datePublished": "2025-09-15T14:21:19.574Z",
        "dateUpdated": "2026-08-05T08:58:02.384Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T08:58:02.384Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmtd: core: add missing of_node_get() in dynamic partitions code\n\nThis fixes unbalanced of_node_put():\n[    1.078910] 6 cmdlinepart partitions found on MTD device gpmi-nand\n[    1.085116] Creating 6 MTD partitions on \"gpmi-nand\":\n[    1.090181] 0x000000000000-0x000008000000 : \"nandboot\"\n[    1.096952] 0x000008000000-0x000009000000 : \"nandfit\"\n[    1.103547] 0x000009000000-0x00000b000000 : \"nandkernel\"\n[    1.110317] 0x00000b000000-0x00000c000000 : \"nanddtb\"\n[    1.115525] ------------[ cut here ]------------\n[    1.120141] refcount_t: addition on 0; use-after-free.\n[    1.125328] WARNING: CPU: 0 PID: 1 at lib/refcount.c:25 refcount_warn_saturate+0xdc/0x148\n[    1.133528] Modules linked in:\n[    1.136589] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.0.0-rc7-next-20220930-04543-g8cf3f7\n[    1.146342] Hardware name: Freescale i.MX8DXL DDR3L EVK (DT)\n[    1.151999] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)\n[    1.158965] pc : refcount_warn_saturate+0xdc/0x148\n[    1.163760] lr : refcount_warn_saturate+0xdc/0x148\n[    1.168556] sp : ffff800009ddb080\n[    1.171866] x29: ffff800009ddb080 x28: ffff800009ddb35a x27: 0000000000000002\n[    1.179015] x26: ffff8000098b06ad x25: ffffffffffffffff x24: ffff0a00ffffff05\n[    1.186165] x23: ffff00001fdf6470 x22: ffff800009ddb367 x21: 0000000000000000\n[    1.193314] x20: ffff00001fdfebe8 x19: ffff00001fdfec50 x18: ffffffffffffffff\n[    1.200464] x17: 0000000000000000 x16: 0000000000000118 x15: 0000000000000004\n[    1.207614] x14: 0000000000000fff x13: ffff800009bca248 x12: 0000000000000003\n[    1.214764] x11: 00000000ffffefff x10: c0000000ffffefff x9 : 4762cb2ccb52de00\n[    1.221914] x8 : 4762cb2ccb52de00 x7 : 205d313431303231 x6 : 312e31202020205b\n[    1.229063] x5 : ffff800009d55c1f x4 : 0000000000000001 x3 : 0000000000000000\n[    1.236213] x2 : 0000000000000000 x1 : ffff800009954be6 x0 : 000000000000002a\n[    1.243365] Call trace:\n[    1.245806]  refcount_warn_saturate+0xdc/0x148\n[    1.250253]  kobject_get+0x98/0x9c\n[    1.253658]  of_node_get+0x20/0x34\n[    1.257072]  of_fwnode_get+0x3c/0x54\n[    1.260652]  fwnode_get_nth_parent+0xd8/0xf4\n[    1.264926]  fwnode_full_name_string+0x3c/0xb4\n[    1.269373]  device_node_string+0x498/0x5b4\n[    1.273561]  pointer+0x41c/0x5d0\n[    1.276793]  vsnprintf+0x4d8/0x694\n[    1.280198]  vprintk_store+0x164/0x528\n[    1.283951]  vprintk_emit+0x98/0x164\n[    1.287530]  vprintk_default+0x44/0x6c\n[    1.291284]  vprintk+0xf0/0x134\n[    1.294428]  _printk+0x54/0x7c\n[    1.297486]  of_node_release+0xe8/0x128\n[    1.301326]  kobject_put+0x98/0xfc\n[    1.304732]  of_node_put+0x1c/0x28\n[    1.308137]  add_mtd_device+0x484/0x6d4\n[    1.311977]  add_mtd_partitions+0xf0/0x1d0\n[    1.316078]  parse_mtd_partitions+0x45c/0x518\n[    1.320439]  mtd_device_parse_register+0xb0/0x274\n[    1.325147]  gpmi_nand_probe+0x51c/0x650\n[    1.329074]  platform_probe+0xa8/0xd0\n[    1.332740]  really_probe+0x130/0x334\n[    1.336406]  __driver_probe_device+0xb4/0xe0\n[    1.340681]  driver_probe_device+0x3c/0x1f8\n[    1.344869]  __driver_attach+0xdc/0x1a4\n[    1.348708]  bus_for_each_dev+0x80/0xcc\n[    1.352548]  driver_attach+0x24/0x30\n[    1.356127]  bus_add_driver+0x108/0x1f4\n[    1.359967]  driver_register+0x78/0x114\n[    1.363807]  __platform_driver_register+0x24/0x30\n[    1.368515]  gpmi_nand_driver_init+0x1c/0x28\n[    1.372798]  do_one_initcall+0xbc/0x238\n[    1.376638]  do_initcall_level+0x94/0xb4\n[    1.380565]  do_initcalls+0x54/0x94\n[    1.384058]  do_basic_setup+0x1c/0x28\n[    1.387724]  kernel_init_freeable+0x110/0x188\n[    1.392084]  kernel_init+0x20/0x1a0\n[    1.395578]  ret_from_fork+0x10/0x20\n[    1.399157] ---[ end trace 0000000000000000 ]---\n[    1.403782] ------------[ cut here ]------------"
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 7.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:L - The bug is reached only through local MTD partition registration (add_mtd_device → mtd_check_of_node), either at platform/NAND probe (e.g. gpmi_nand_probe) or via the local BLKPG_ADD_PARTITION ioctl on /dev/mtd*; it is not reachable via network packets or adjacent-link protocols.\nAC:L - On an OF_DYNAMIC system whose MTD master has an of_node, each dynamically created partition deterministically executes the unbalanced of_node_put(parent_dn) with no race or attacker-uncontrollable memory layout required.\nPR:L - The underflow occurs automatically during boot-time driver probe on affected DT/cmdlinepart configurations with no capability check on that path; per the higher-severity reading used for similar probe-time of_node_put underflow bugs, a basic local user is sufficient rather than requiring init-namespace root.\nUI:N - Partition parsing and mtd_check_of_node run as part of normal driver initialization (or a local actor adding partitions via BLKPG); no separate victim action such as mounting a filesystem is required.\nS:U - The corrupted object is a kernel device_node/kobject and any resulting underflow or use-after-free remains inside the host kernel’s security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The unbalanced of_node_put drives the parent device_node kobject to refcount zero, producing a zombie kobject (and on OF_DYNAMIC/overlay platforms a free-while-referenced device_node), which per UAF guidance enables heap reuse and arbitrary kernel disclosure.\nI:H - A device_node/kobject left at refcount zero or freed while still referenced by the MTD parent is a heap-spray target whose fields can be overwritten, converting the underflow into an arbitrary-write and control-flow hijack primitive.\nA:H - The demonstrated impact is refcount_warn_saturate() (“refcount_t: addition on 0; use-after-free”), which is fatal under panic_on_warn, and the resulting corrupted/zombie kobject causes kernel oopses even when not fully exploited."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/mtd/mtdcore.c"
                    ],
                    "versions": [
                        {
                            "version": "ad9b10d1eaada169bd764abcab58f08538877e26",
                            "lessThan": "9e54ce00505d291ef88f2c05e5eef46269daf83c",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "ad9b10d1eaada169bd764abcab58f08538877e26",
                            "lessThan": "12b58961de0bd88b3c7dfa5d21f6d67f4678b780",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/mtd/mtdcore.c"
                    ],
                    "versions": [
                        {
                            "version": "6.0",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.0",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.0.7",
                            "lessThanOrEqual": "6.0.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.0",
                                    "versionEndExcluding": "6.0.7"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.0",
                                    "versionEndExcluding": "6.1"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/9e54ce00505d291ef88f2c05e5eef46269daf83c"
                },
                {
                    "url": "https://git.kernel.org/stable/c/12b58961de0bd88b3c7dfa5d21f6d67f4678b780"
                }
            ],
            "title": "mtd: core: add missing of_node_get() in dynamic partitions code",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}