---
id: CVE-2026-68203
title: 'media: vivid: fix cleanup bugs in vivid_init()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  media: vivid: fix cleanup bugs in vivid_init()

  When platform_device_register() fails in vivid_init(), the embedded
  struct device in vivid_pdev has already been initial…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 <
    ae6ccae32f51f788035d2c5cec898491dd7150ef
  - >-
    Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 <
    4385092a86b94e1f332db35a3766108978c0722f
  - >-
    Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 <
    1349af7f87df57940619f5b87990b799dac9ed8a
  - >-
    Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 <
    6d51ad8f1c50c50d1abcc97fd243179967184c6a
  - >-
    Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 <
    a07c179a92e949172ca52f6d4a13202ea88cd4b7
  - Linux 4.1
published: '2026-08-10'
updated: '2026-10-21'
sourceUpdated: '2026-10-21T12:43:32.072Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-68203'
references:
  - url: 'https://git.kernel.org/stable/c/ae6ccae32f51f788035d2c5cec898491dd7150ef'
  - url: 'https://git.kernel.org/stable/c/4385092a86b94e1f332db35a3766108978c0722f'
  - url: 'https://git.kernel.org/stable/c/1349af7f87df57940619f5b87990b799dac9ed8a'
  - url: 'https://git.kernel.org/stable/c/6d51ad8f1c50c50d1abcc97fd243179967184c6a'
  - url: 'https://git.kernel.org/stable/c/a07c179a92e949172ca52f6d4a13202ea88cd4b7'
tags:
  - cve.org
epss: 0.00209
epssPercentile: 0.10422
ingestedAt: '2026-10-21T12:48:53.605Z'
---

## Overview

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

media: vivid: fix cleanup bugs in vivid_init()

When platform_device_register() fails in vivid_init(), the embedded
struct device in vivid_pdev has already been initialized by
device_initialize(), but the failure path jumps to free_output_strings
without dropping the device reference for the current platform device:

  vivid_init()
    -> platform_device_register(&vivid_pdev)
       -> device_initialize(&vivid_pdev.dev)
       -> setup_pdev_dma_masks(&vivid_pdev)
       -> platform_device_add(&vivid_pdev)

This leads to a reference leak when platform_device_register() fails.
Fix this by calling platform_device_put() before jumping to the common
cleanup path.

Also, the unreg_driver label incorrectly calls
platform_driver_register() instead of platform_driver_unregister(),
which breaks cleanup when workqueue creation fails after successful
driver registration. Fix that as well.

The reference leak was identified by a static analysis tool I developed
and confirmed by manual review. The incorrect cleanup call was found
during code inspection.

## Affected

- `Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 < ae6ccae32f51f788035d2c5cec898491dd7150ef`
- `Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 < 4385092a86b94e1f332db35a3766108978c0722f`
- `Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 < 1349af7f87df57940619f5b87990b799dac9ed8a`
- `Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 < 6d51ad8f1c50c50d1abcc97fd243179967184c6a`
- `Linux >= f46d740fb0258982f00ffdbddc6486e674edafb5 < a07c179a92e949172ca52f6d4a13202ea88cd4b7`
- `Linux 4.1`

## Remediation

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