GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2022-50578 (GCVE-0-2022-50578)

Vulnerability from cvelistv5 – Published: 2025-10-22 13:23 – Updated: 2026-05-11 19:22
VLAI
Title
class: fix possible memory leak in __class_register()
Summary
In the Linux kernel, the following vulnerability has been resolved: class: fix possible memory leak in __class_register() If class_add_groups() returns error, the 'cp->subsys' need be unregister, and the 'cp' need be freed. We can not call kset_unregister() here, because the 'cls' will be freed in callback function class_release() and it's also freed in caller's error path, it will cause double free. So fix this by calling kobject_del() and kfree_const(name) to cleanup kobject. Besides, call kfree() to free the 'cp'. Fault injection test can trigger this: unreferenced object 0xffff888102fa8190 (size 8): comm "modprobe", pid 502, jiffies 4294906074 (age 49.296s) hex dump (first 8 bytes): 70 6b 74 63 64 76 64 00 pktcdvd. backtrace: [<00000000e7c7703d>] __kmalloc_track_caller+0x1ae/0x320 [<000000005e4d70bc>] kstrdup+0x3a/0x70 [<00000000c2e5e85a>] kstrdup_const+0x68/0x80 [<000000000049a8c7>] kvasprintf_const+0x10b/0x190 [<0000000029123163>] kobject_set_name_vargs+0x56/0x150 [<00000000747219c9>] kobject_set_name+0xab/0xe0 [<0000000005f1ea4e>] __class_register+0x15c/0x49a unreferenced object 0xffff888037274000 (size 1024): comm "modprobe", pid 502, jiffies 4294906074 (age 49.296s) hex dump (first 32 bytes): 00 40 27 37 80 88 ff ff 00 40 27 37 80 88 ff ff .@'7.....@'7.... 00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00 .....N.......... backtrace: [<00000000151f9600>] kmem_cache_alloc_trace+0x17c/0x2f0 [<00000000ecf3dd95>] __class_register+0x86/0x49a
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: ced6473e7486702f530a49f886b73195e4977734 , < 4efa5443817c1b6de22d401aeca5b2481e835f8c (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < 3bb9c92c27624ad076419a70f2b1a30cd1f8bbbd (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < 3e0efc3f3f5e5c73996782f8db69963e501bb878 (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < 18a7200646958cf8e1b8a933de08122fc50676cd (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < 417ef049e3fd3b0d2593c1d5ffa3d0d5d0a018a7 (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < e764ad5918a099ebeb909ccff83893a714e497e1 (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < abaedb68a769e6bf36836b55a2f49b531c5f3f7b (git)
Affected: ced6473e7486702f530a49f886b73195e4977734 , < 8c3e8a6bdb5253b97ad532570f8b5db5f7a06407 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.10
Unaffected: 0 , < 4.10 (semver)
Unaffected: 4.14.303 , ≤ 4.14.* (semver)
Unaffected: 4.19.270 , ≤ 4.19.* (semver)
Unaffected: 5.4.229 , ≤ 5.4.* (semver)
Unaffected: 5.10.163 , ≤ 5.10.* (semver)
Unaffected: 5.15.86 , ≤ 5.15.* (semver)
Unaffected: 6.0.16 , ≤ 6.0.* (semver)
Unaffected: 6.1.2 , ≤ 6.1.* (semver)
Unaffected: 6.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/base/class.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4efa5443817c1b6de22d401aeca5b2481e835f8c",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "3bb9c92c27624ad076419a70f2b1a30cd1f8bbbd",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "3e0efc3f3f5e5c73996782f8db69963e501bb878",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "18a7200646958cf8e1b8a933de08122fc50676cd",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "417ef049e3fd3b0d2593c1d5ffa3d0d5d0a018a7",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "e764ad5918a099ebeb909ccff83893a714e497e1",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "abaedb68a769e6bf36836b55a2f49b531c5f3f7b",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            },
            {
              "lessThan": "8c3e8a6bdb5253b97ad532570f8b5db5f7a06407",
              "status": "affected",
              "version": "ced6473e7486702f530a49f886b73195e4977734",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/base/class.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.10"
            },
            {
              "lessThan": "4.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.14.*",
              "status": "unaffected",
              "version": "4.14.303",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.19.*",
              "status": "unaffected",
              "version": "4.19.270",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.229",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.163",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.86",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.0.*",
              "status": "unaffected",
              "version": "6.0.16",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.14.303",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.19.270",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.229",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.163",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.86",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.0.16",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.2",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2",
                  "versionStartIncluding": "4.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nclass: fix possible memory leak in __class_register()\n\nIf class_add_groups() returns error, the \u0027cp-\u003esubsys\u0027 need be\nunregister, and the \u0027cp\u0027 need be freed.\n\nWe can not call kset_unregister() here, because the \u0027cls\u0027 will\nbe freed in callback function class_release() and it\u0027s also\nfreed in caller\u0027s error path, it will cause double free.\n\nSo fix this by calling kobject_del() and kfree_const(name) to\ncleanup kobject. Besides, call kfree() to free the \u0027cp\u0027.\n\nFault injection test can trigger this:\n\nunreferenced object 0xffff888102fa8190 (size 8):\n  comm \"modprobe\", pid 502, jiffies 4294906074 (age 49.296s)\n  hex dump (first 8 bytes):\n    70 6b 74 63 64 76 64 00                          pktcdvd.\n  backtrace:\n    [\u003c00000000e7c7703d\u003e] __kmalloc_track_caller+0x1ae/0x320\n    [\u003c000000005e4d70bc\u003e] kstrdup+0x3a/0x70\n    [\u003c00000000c2e5e85a\u003e] kstrdup_const+0x68/0x80\n    [\u003c000000000049a8c7\u003e] kvasprintf_const+0x10b/0x190\n    [\u003c0000000029123163\u003e] kobject_set_name_vargs+0x56/0x150\n    [\u003c00000000747219c9\u003e] kobject_set_name+0xab/0xe0\n    [\u003c0000000005f1ea4e\u003e] __class_register+0x15c/0x49a\n\nunreferenced object 0xffff888037274000 (size 1024):\n  comm \"modprobe\", pid 502, jiffies 4294906074 (age 49.296s)\n  hex dump (first 32 bytes):\n    00 40 27 37 80 88 ff ff 00 40 27 37 80 88 ff ff  .@\u00277.....@\u00277....\n    00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........\n  backtrace:\n    [\u003c00000000151f9600\u003e] kmem_cache_alloc_trace+0x17c/0x2f0\n    [\u003c00000000ecf3dd95\u003e] __class_register+0x86/0x49a"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-05-11T19:22:08.143Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4efa5443817c1b6de22d401aeca5b2481e835f8c"
        },
        {
          "url": "https://git.kernel.org/stable/c/3bb9c92c27624ad076419a70f2b1a30cd1f8bbbd"
        },
        {
          "url": "https://git.kernel.org/stable/c/3e0efc3f3f5e5c73996782f8db69963e501bb878"
        },
        {
          "url": "https://git.kernel.org/stable/c/18a7200646958cf8e1b8a933de08122fc50676cd"
        },
        {
          "url": "https://git.kernel.org/stable/c/417ef049e3fd3b0d2593c1d5ffa3d0d5d0a018a7"
        },
        {
          "url": "https://git.kernel.org/stable/c/e764ad5918a099ebeb909ccff83893a714e497e1"
        },
        {
          "url": "https://git.kernel.org/stable/c/abaedb68a769e6bf36836b55a2f49b531c5f3f7b"
        },
        {
          "url": "https://git.kernel.org/stable/c/8c3e8a6bdb5253b97ad532570f8b5db5f7a06407"
        }
      ],
      "title": "class: fix possible memory leak in __class_register()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-50578",
    "datePublished": "2025-10-22T13:23:31.565Z",
    "dateReserved": "2025-10-22T13:20:23.761Z",
    "dateUpdated": "2026-05-11T19:22:08.143Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2022-50578",
      "date": "2026-09-18",
      "epss": "0.00226",
      "percentile": "0.13586"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/base/class.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "4efa5443817c1b6de22d401aeca5b2481e835f8c",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3bb9c92c27624ad076419a70f2b1a30cd1f8bbbd",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3e0efc3f3f5e5c73996782f8db69963e501bb878",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "18a7200646958cf8e1b8a933de08122fc50676cd",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "417ef049e3fd3b0d2593c1d5ffa3d0d5d0a018a7",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e764ad5918a099ebeb909ccff83893a714e497e1",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "abaedb68a769e6bf36836b55a2f49b531c5f3f7b",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "8c3e8a6bdb5253b97ad532570f8b5db5f7a06407",
                    "status": "affected",
                    "version": "ced6473e7486702f530a49f886b73195e4977734",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/base/class.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "4.10"
                  },
                  {
                    "lessThan": "4.10",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "4.14.*",
                    "status": "unaffected",
                    "version": "4.14.303",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "4.19.*",
                    "status": "unaffected",
                    "version": "4.19.270",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.4.*",
                    "status": "unaffected",
                    "version": "5.4.229",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.10.*",
                    "status": "unaffected",
                    "version": "5.10.163",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.15.*",
                    "status": "unaffected",
                    "version": "5.15.86",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.0.*",
                    "status": "unaffected",
                    "version": "6.0.16",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.2",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "6.2",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nclass: fix possible memory leak in __class_register()\n\nIf class_add_groups() returns error, the \u0027cp-\u003esubsys\u0027 need be\nunregister, and the \u0027cp\u0027 need be freed.\n\nWe can not call kset_unregister() here, because the \u0027cls\u0027 will\nbe freed in callback function class_release() and it\u0027s also\nfreed in caller\u0027s error path, it will cause double free.\n\nSo fix this by calling kobject_del() and kfree_const(name) to\ncleanup kobject. Besides, call kfree() to free the \u0027cp\u0027.\n\nFault injection test can trigger this:\n\nunreferenced object 0xffff888102fa8190 (size 8):\n  comm \"modprobe\", pid 502, jiffies 4294906074 (age 49.296s)\n  hex dump (first 8 bytes):\n    70 6b 74 63 64 76 64 00                          pktcdvd.\n  backtrace:\n    [\u003c00000000e7c7703d\u003e] __kmalloc_track_caller+0x1ae/0x320\n    [\u003c000000005e4d70bc\u003e] kstrdup+0x3a/0x70\n    [\u003c00000000c2e5e85a\u003e] kstrdup_const+0x68/0x80\n    [\u003c000000000049a8c7\u003e] kvasprintf_const+0x10b/0x190\n    [\u003c0000000029123163\u003e] kobject_set_name_vargs+0x56/0x150\n    [\u003c00000000747219c9\u003e] kobject_set_name+0xab/0xe0\n    [\u003c0000000005f1ea4e\u003e] __class_register+0x15c/0x49a\n\nunreferenced object 0xffff888037274000 (size 1024):\n  comm \"modprobe\", pid 502, jiffies 4294906074 (age 49.296s)\n  hex dump (first 32 bytes):\n    00 40 27 37 80 88 ff ff 00 40 27 37 80 88 ff ff  .@\u00277.....@\u00277....\n    00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........\n  backtrace:\n    [\u003c00000000151f9600\u003e] kmem_cache_alloc_trace+0x17c/0x2f0\n    [\u003c00000000ecf3dd95\u003e] __class_register+0x86/0x49a"
          }
        ],
        "id": "CVE-2022-50578",
        "lastModified": "2026-06-17T05:23:49.567",
        "metrics": {},
        "published": "2025-10-22T14:15:42.803",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/18a7200646958cf8e1b8a933de08122fc50676cd"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3bb9c92c27624ad076419a70f2b1a30cd1f8bbbd"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3e0efc3f3f5e5c73996782f8db69963e501bb878"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/417ef049e3fd3b0d2593c1d5ffa3d0d5d0a018a7"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4efa5443817c1b6de22d401aeca5b2481e835f8c"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/8c3e8a6bdb5253b97ad532570f8b5db5f7a06407"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/abaedb68a769e6bf36836b55a2f49b531c5f3f7b"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e764ad5918a099ebeb909ccff83893a714e497e1"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Deferred"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-07-21T19:08:37+00:00",
      "cve": "CVE-2022-50578",
      "id": "CVE-2022-50578",
      "initial_release_date": "2022-01-01T00:00:00+00:00",
      "product_status:fixed": "120",
      "product_status:known_affected": "166",
      "product_status:known_not_affected": "76",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Linux kernel: Memory leak in __class_register()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2022/cve-2022-50578.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…