{"id":"DEBIAN-CVE-2025-38305","details":"In the Linux kernel, the following vulnerability has been resolved:  ptp: remove ptp-\u003en_vclocks check logic in ptp_vclock_in_use()  There is no disagreement that we should check both ptp-\u003eis_virtual_clock and ptp-\u003en_vclocks to check if the ptp virtual clock is in use.  However, when we acquire ptp-\u003en_vclocks_mux to read ptp-\u003en_vclocks in ptp_vclock_in_use(), we observe a recursive lock in the call trace starting from n_vclocks_store().  ============================================ WARNING: possible recursive locking detected 6.15.0-rc6 #1 Not tainted -------------------------------------------- syz.0.1540/13807 is trying to acquire lock: ffff888035a24868 (&ptp-\u003en_vclocks_mux){+.+.}-{4:4}, at:  ptp_vclock_in_use drivers/ptp/ptp_private.h:103 [inline] ffff888035a24868 (&ptp-\u003en_vclocks_mux){+.+.}-{4:4}, at:  ptp_clock_unregister+0x21/0x250 drivers/ptp/ptp_clock.c:415  but task is already holding lock: ffff888030704868 (&ptp-\u003en_vclocks_mux){+.+.}-{4:4}, at:  n_vclocks_store+0xf1/0x6d0 drivers/ptp/ptp_sysfs.c:215  other info that might help us debug this:  Possible unsafe locking scenario:         CPU0        ----   lock(&ptp-\u003en_vclocks_mux);   lock(&ptp-\u003en_vclocks_mux);   *** DEADLOCK *** .... ============================================  The best way to solve this is to remove the logic that checks ptp-\u003en_vclocks in ptp_vclock_in_use().  The reason why this is appropriate is that any path that uses ptp-\u003en_vclocks must unconditionally check if ptp-\u003en_vclocks is greater than 0 before unregistering vclocks, and all functions are already written this way. And in the function that uses ptp-\u003en_vclocks, we already get ptp-\u003en_vclocks_mux before unregistering vclocks.  Therefore, we need to remove the redundant check for ptp-\u003en_vclocks in ptp_vclock_in_use() to prevent recursive locking.","modified":"2026-09-01T16:06:14.413184713Z","published":"2025-07-10T08:15:29.320Z","upstream":["CVE-2025-38305"],"references":[{"type":"ADVISORY","url":"https://security-tracker.debian.org/tracker/CVE-2025-38305"}],"affected":[{"package":{"name":"linux","ecosystem":"Debian:12","purl":"pkg:deb/debian/linux?arch=source&distro=bookworm"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.1.147-1"}]}],"versions":["6.1.106-1","6.1.106-2","6.1.106-3","6.1.112-1","6.1.115-1","6.1.119-1","6.1.123-1","6.1.124-1","6.1.128-1","6.1.129-1","6.1.133-1","6.1.135-1","6.1.137-1","6.1.139-1","6.1.140-1","6.1.27-1","6.1.37-1","6.1.38-1","6.1.38-2","6.1.38-2~bpo11+1","6.1.38-3","6.1.38-4","6.1.38-4~bpo11+1","6.1.52-1","6.1.55-1","6.1.55-1~bpo11+1","6.1.64-1","6.1.66-1","6.1.67-1","6.1.69-1","6.1.69-1~bpo11+1","6.1.76-1","6.1.76-1~bpo11+1","6.1.82-1","6.1.85-1","6.1.90-1","6.1.90-1~bpo11+1","6.1.94-1","6.1.94-1~bpo11+1","6.1.98-1","6.1.99-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/osv-test-debian-osv/debian-cve-osv/DEBIAN-CVE-2025-38305.json"}},{"package":{"name":"linux","ecosystem":"Debian:13","purl":"pkg:deb/debian/linux?arch=source&distro=trixie"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.12.35-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/osv-test-debian-osv/debian-cve-osv/DEBIAN-CVE-2025-38305.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.35-1"}]}],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/osv-test-debian-osv/debian-cve-osv/DEBIAN-CVE-2025-38305.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"}]}