{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-46210", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-05-13T15:03:33.105Z", "datePublished": "2026-05-28T09:40:27.884Z", "dateUpdated": "2026-10-15T10:07:25.926Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-10-15T10:07:25.926Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: iris: fix use-after-free of fmt_src during MBPF check\n\nDuring concurrency testing, multiple instances can run in parallel, and\neach instance uses its own inst->lock while the core->lock protects the\nlist of active instances. The race happens because these locks cover\ndifferent scopes, inst->lock protects only the internals of a single\ninstance, while the Macro Blocks Per Frame (MBPF) checker walks the\ncore list under core->lock and reads fields like fmt_src->width and\nfmt_src->height. At the same time, iris_close() may free fmt_src and\nfmt_dst under inst->lock while the instance is still present in the core\nlist. This allows a situation where the MBPF checker, still iterating\nthrough the core list, reaches an instance whose fmt_src was already\nfreed by another thread and ends up dereferencing a dangling pointer,\nresulting in a use-after-free. This happens because the MBPF checker\nassumes that any instance in the core list is fully valid, but the\nfreeing of fmt_src and fmt_dst without removing the instance from the\ncore list is not correct.\n\nThe correct ordering is to defer freeing fmt_src and fmt_dst until after\nthe instance has been removed from the core list and all teardown under\nthe core lock has completed, ensuring that no dangling pointers are ever\nexposed during MBPF checks." } ], "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 vulnerable code is reached only through V4L2 ioctls (REQBUFS/STREAMON/close) on a local `/dev/video*` codec device node; there is no network-facing path to the iris driver.\nAC:L - The attacker controls both sides of the race—closing one instance (freeing fmt_src while still listed) while issuing REQBUFS/STREAMON on another to walk the core list—and the two paths use different locks, so the window is reliably re-triggerable.\nPR:L - Exploitation requires opening the codec device node, which a normal local unprivileged user/app can do (video-group/logind ACL on Linux, mediacodec/app access on Android); no root or special capability is needed.\nUI:N - The attacker performs all device opens, ioctls, and closes itself; no victim action is required.\nS:U - The use-after-free is confined to the kernel's own memory and security authority; it does not cross into another security scope such as a VM or IOMMU boundary.\nC:H - This is a use-after-free read of a freed slab object (`struct v4l2_format`); a reallocated, attacker-controlled object enables disclosure of kernel memory contents.\nI:H - A UAF on a freed heap object permits heap-spray/reallocation manipulation that can be leveraged into a write/control primitive over the dangling slab object.\nA:H - Dereferencing the dangling `fmt_src` pointer (potentially in an unmapped/reused page) readily causes a kernel oops or panic." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/media/platform/qcom/iris/iris_vdec.c", "drivers/media/platform/qcom/iris/iris_vdec.h", "drivers/media/platform/qcom/iris/iris_venc.c", "drivers/media/platform/qcom/iris/iris_venc.h", "drivers/media/platform/qcom/iris/iris_vidc.c" ], "versions": [ { "version": "5ad964ad5656668399f00c76707f0d063b64a4b1", "lessThan": "96889fcdb0988108a19a29b0467717a503651a73", "status": "affected", "versionType": "git" }, { "version": "5ad964ad5656668399f00c76707f0d063b64a4b1", "lessThan": "494ffd1712a588e590e6b1e9f876a8c8b24a9180", "status": "affected", "versionType": "git" }, { "version": "5ad964ad5656668399f00c76707f0d063b64a4b1", "lessThan": "3d9593ad1a58c5acc3e5fa2a48222bb7632e6812", "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/media/platform/qcom/iris/iris_vdec.c", "drivers/media/platform/qcom/iris/iris_vdec.h", "drivers/media/platform/qcom/iris/iris_venc.c", "drivers/media/platform/qcom/iris/iris_venc.h", "drivers/media/platform/qcom/iris/iris_vidc.c" ], "versions": [ { "version": "6.18", "status": "affected" }, { "version": "0", "lessThan": "6.18", "status": "unaffected", "versionType": "semver" }, { "version": "6.18.57", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.0.9", "lessThanOrEqual": "7.0.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.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.18", "versionEndExcluding": "6.18.57" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.18", "versionEndExcluding": "7.0.9" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.18", "versionEndExcluding": "7.1" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/96889fcdb0988108a19a29b0467717a503651a73" }, { "url": "https://git.kernel.org/stable/c/494ffd1712a588e590e6b1e9f876a8c8b24a9180" }, { "url": "https://git.kernel.org/stable/c/3d9593ad1a58c5acc3e5fa2a48222bb7632e6812" } ], "title": "media: iris: fix use-after-free of fmt_src during MBPF check", "x_generator": { "engine": "bippy-1.2.0" } } } }