{"id":"DEBIAN-CVE-2025-37837","details":"In the Linux kernel, the following vulnerability has been resolved:  iommu/tegra241-cmdqv: Fix warnings due to dmam_free_coherent()  Two WARNINGs are observed when SMMU driver rolls back upon failure:  arm-smmu-v3.9.auto: Failed to register iommu  arm-smmu-v3.9.auto: probe with driver arm-smmu-v3 failed with error -22  ------------[ cut here ]------------  WARNING: CPU: 5 PID: 1 at kernel/dma/mapping.c:74 dmam_free_coherent+0xc0/0xd8  Call trace:   dmam_free_coherent+0xc0/0xd8 (P)   tegra241_vintf_free_lvcmdq+0x74/0x188   tegra241_cmdqv_remove_vintf+0x60/0x148   tegra241_cmdqv_remove+0x48/0xc8   arm_smmu_impl_remove+0x28/0x60   devm_action_release+0x1c/0x40  ------------[ cut here ]------------  128 pages are still in use!  WARNING: CPU: 16 PID: 1 at mm/page_alloc.c:6902 free_contig_range+0x18c/0x1c8  Call trace:   free_contig_range+0x18c/0x1c8 (P)   cma_release+0x154/0x2f0   dma_free_contiguous+0x38/0xa0   dma_direct_free+0x10c/0x248   dma_free_attrs+0x100/0x290   dmam_free_coherent+0x78/0xd8   tegra241_vintf_free_lvcmdq+0x74/0x160   tegra241_cmdqv_remove+0x98/0x198   arm_smmu_impl_remove+0x28/0x60   devm_action_release+0x1c/0x40  This is because the LVCMDQ queue memory are managed by devres, while that dmam_free_coherent() is called in the context of devm_action_release().  Jason pointed out that \"arm_smmu_impl_probe() has mis-ordered the devres callbacks if ops-\u003edevice_remove() is going to be manually freeing things that probe allocated\": https://lore.kernel.org/linux-iommu/20250407174408.GB1722458@nvidia.com/  In fact, tegra241_cmdqv_init_structures() only allocates memory resources which means any failure that it generates would be similar to -ENOMEM, so there is no point in having that \"falling back to standard SMMU\" routine, as the standard SMMU would likely fail to allocate memory too.  Remove the unwind part in tegra241_cmdqv_init_structures(), and return a proper error code to ask SMMU driver to call tegra241_cmdqv_remove() via impl_ops-\u003edevice_remove(). Then, drop tegra241_vintf_free_lvcmdq() since devres will take care of that.","modified":"2026-08-27T23:05:28.598814674Z","published":"2025-05-09T07:16:04.467Z","upstream":["CVE-2025-37837"],"references":[{"type":"ADVISORY","url":"https://security-tracker.debian.org/tracker/CVE-2025-37837"}],"affected":[{"package":{"name":"linux","ecosystem":"Debian:13","purl":"pkg:deb/debian/linux?arch=source&distro=trixie"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.12.25-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/osv-test-debian-osv/debian-cve-osv/DEBIAN-CVE-2025-37837.json"}},{"package":{"name":"linux","ecosystem":"Debian:14","purl":"pkg:deb/debian/linux?arch=source&distro=forky"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.12.25-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/osv-test-debian-osv/debian-cve-osv/DEBIAN-CVE-2025-37837.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"}]}