{"id":"CVE-2022-50745","state":"PUBLISHED","title":"staging: media: tegra-video: fix device_node use after free","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nstaging: media: tegra-video: fix device_node use after free\n\nAt probe time this code path is followed:\n\n * tegra_csi_init\n   * tegra_csi_channels_alloc\n     * for_each_child_of_node(node, channel) -- iterates over channels\n       * automatically gets 'channel'\n         * tegra_csi_channel_alloc()\n           * saves into chan->of_node a pointer to the channel OF node\n       * automatically gets and puts 'channel'\n       * now the node saved in chan->of_node has refcount 0, can disappear\n   * tegra_csi_channels_init\n     * iterates over channels\n       * tegra_csi_channel_init -- uses chan->of_node\n\nAfter that, chan->of_node keeps storing the node until the device is\nremoved.\n\nof_node_get() the node and of_node_put() it during teardown to avoid any\nrisk.","publishedAt":"2025-12-24T13:05:41.858Z","updatedAt":"2026-08-05T08:59:34.782Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"5451efb2ca30f3c42b9efb8327ce35b62870dbd3","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"ce50c612458091d926ccb05d7db11d9f93532db2","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"6512c9498fcb97e7c760e3ef86b2272f2c0f765f","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"0fd003d3c708c80350a815eaf37b8e1114b976cf","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"c4d344163c3a7f90712525f931a6c016bbb35e18","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/staging/media/tegra-video/csi.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.10","versionType":"semver"},{"version":"5.10.163","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.87","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.0.18","status":"unaffected","lessThanOrEqual":"6.0.*","versionType":"semver"},{"version":"6.1.4","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/staging/media/tegra-video/csi.c"]}],"references":["https://git.kernel.org/stable/c/5451efb2ca30f3c42b9efb8327ce35b62870dbd3","https://git.kernel.org/stable/c/ce50c612458091d926ccb05d7db11d9f93532db2","https://git.kernel.org/stable/c/6512c9498fcb97e7c760e3ef86b2272f2c0f765f","https://git.kernel.org/stable/c/0fd003d3c708c80350a815eaf37b8e1114b976cf","https://git.kernel.org/stable/c/c4d344163c3a7f90712525f931a6c016bbb35e18"],"weaknesses":[],"ingestedAt":"2026-10-29T20:05:26.763Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2022/50xxx/CVE-2022-50745.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-50745","state":"PUBLISHED","datePublished":"2025-12-24T13:05:41.858Z","dateUpdated":"2026-08-05T08:59:34.782Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-12-24T13:02:21.543Z"},"containers":{"cna":{"title":"staging: media: tegra-video: fix device_node use after free","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nstaging: media: tegra-video: fix device_node use after free\n\nAt probe time this code path is followed:\n\n * tegra_csi_init\n   * tegra_csi_channels_alloc\n     * for_each_child_of_node(node, channel) -- iterates over channels\n       * automatically gets 'channel'\n         * tegra_csi_channel_alloc()\n           * saves into chan->of_node a pointer to the channel OF node\n       * automatically gets and puts 'channel'\n       * now the node saved in chan->of_node has refcount 0, can disappear\n   * tegra_csi_channels_init\n     * iterates over channels\n       * tegra_csi_channel_init -- uses chan->of_node\n\nAfter that, chan->of_node keeps storing the node until the device is\nremoved.\n\nof_node_get() the node and of_node_put() it during teardown to avoid any\nrisk."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"5451efb2ca30f3c42b9efb8327ce35b62870dbd3","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"ce50c612458091d926ccb05d7db11d9f93532db2","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"6512c9498fcb97e7c760e3ef86b2272f2c0f765f","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"0fd003d3c708c80350a815eaf37b8e1114b976cf","versionType":"git"},{"version":"1ebaeb09830f36c1111b72a95420814225bd761c","status":"affected","lessThan":"c4d344163c3a7f90712525f931a6c016bbb35e18","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/staging/media/tegra-video/csi.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.10","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.10","versionType":"semver"},{"version":"5.10.163","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.87","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.0.18","status":"unaffected","lessThanOrEqual":"6.0.*","versionType":"semver"},{"version":"6.1.4","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/staging/media/tegra-video/csi.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/5451efb2ca30f3c42b9efb8327ce35b62870dbd3"},{"url":"https://git.kernel.org/stable/c/ce50c612458091d926ccb05d7db11d9f93532db2"},{"url":"https://git.kernel.org/stable/c/6512c9498fcb97e7c760e3ef86b2272f2c0f765f"},{"url":"https://git.kernel.org/stable/c/0fd003d3c708c80350a815eaf37b8e1114b976cf"},{"url":"https://git.kernel.org/stable/c/c4d344163c3a7f90712525f931a6c016bbb35e18"}],"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 defect is reached only on the local Tegra CSI platform probe path (tegra_csi_probe → host1x_client_register → tegra_csi_init → tegra_csi_channels_alloc/init) when parsing DT channel children; it is not reachable via network or adjacent-link packet processing.\nAC:L - for_each_child_of_node drops its temporary reference after each channel allocation, and the missing of_node_get leaves a long-lived dangling pointer deterministically on every non-TPG probe with channel nodes; on OF_DYNAMIC/overlay Tegra camera setups the node can be freed while still referenced with no attacker-uncontrollable race.\nPR:L - The buggy path runs automatically during ordinary boot-time/driver probe on affected Tegra210 VIDEO_TEGRA DT configurations with no capability gate, and per the higher-severity reading used for similar probe-time of_node UAF bugs a basic local user is scored rather than requiring init-namespace root.\nUI:N - Channel allocation and tegra_csi_channel_init run as part of normal host1x/video device initialization; no separate victim action such as mounting a filesystem or opening a device is required.\nS:U - The corrupted object is a kernel device_node used by the tegra-video CSI subdev within the host kernel’s security authority; this is ordinary kernel memory-safety impact, not a VM escape or IOMMU/sandbox boundary cross.\nC:H - Holding chan->of_node (and subdev->fwnode derived from it) after the iterator’s of_node_put without of_node_get is a use-after-free on the device_node; per UAF guidance that enables heap reuse and arbitrary kernel disclosure.\nI:H - The same device_node UAF is a heap-spray target whose freed object fields can be overwritten, converting the dangling OF/fwnode reference into an arbitrary-write and control-flow hijack primitive.\nA:H - Use of the dangling of_node (e.g. full_name / fwnode after free, or later teardown) causes kernel oops/panic, and UAFs are scored Availability High even when not fully exploited."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T08:59:34.782Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.10.163"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"5.15.87"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.0.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.1.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10","versionEndExcluding":"6.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}