{"id":"CVE-2025-68319","state":"PUBLISHED","title":"netconsole: Acquire su_mutex before navigating configs hierarchy","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetconsole: Acquire su_mutex before navigating configs hierarchy\n\nThere is a race between operations that iterate over the userdata\ncg_children list and concurrent add/remove of userdata items through\nconfigfs. The update_userdata() function iterates over the\nnt->userdata_group.cg_children list, and count_extradata_entries() also\niterates over this same list to count nodes.\n\nQuoting from Documentation/filesystems/configfs.rst:\n> A subsystem can navigate the cg_children list and the ci_parent pointer\n> to see the tree created by the subsystem.  This can race with configfs'\n> management of the hierarchy, so configfs uses the subsystem mutex to\n> protect modifications.  Whenever a subsystem wants to navigate the\n> hierarchy, it must do so under the protection of the subsystem\n> mutex.\n\nWithout proper locking, if a userdata item is added or removed\nconcurrently while these functions are iterating, the list can be\naccessed in an inconsistent state. For example, the list_for_each() loop\ncan reach a node that is being removed from the list by list_del_init()\nwhich sets the nodes' .next pointer to point to itself, so the loop will\nnever end (or reach the WARN_ON_ONCE in update_userdata() ).\n\nFix this by holding the configfs subsystem mutex (su_mutex) during all\noperations that iterate over cg_children.\nThis includes:\n- userdatum_value_store() which calls update_userdata() to iterate over\n  cg_children\n- All sysdata_*_enabled_store() functions which call\n  count_extradata_entries() to iterate over cg_children\n\nThe su_mutex must be acquired before dynamic_netconsole_mutex to avoid\npotential lock ordering issues, as configfs operations may already hold\nsu_mutex when calling into our code.","publishedAt":"2025-12-16T15:39:48.903Z","updatedAt":"2026-10-21T12:38:12.214Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"df03f830d099f0811281a222aefdd9d400fa0b72","status":"affected","lessThan":"932c0c7a7ec413399febca5fe3dddf913bb5c924","versionType":"git"},{"version":"df03f830d099f0811281a222aefdd9d400fa0b72","status":"affected","lessThan":"ff70aa7e8cf05745fdba7258952a8bedf33ea336","versionType":"git"},{"version":"df03f830d099f0811281a222aefdd9d400fa0b72","status":"affected","lessThan":"d7d2fcf7ae31471b4e08b7e448b8fd0ec2e06a1b","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/netconsole.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.9","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.9","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.17.8","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/netconsole.c"]}],"references":["https://git.kernel.org/stable/c/932c0c7a7ec413399febca5fe3dddf913bb5c924","https://git.kernel.org/stable/c/ff70aa7e8cf05745fdba7258952a8bedf33ea336","https://git.kernel.org/stable/c/d7d2fcf7ae31471b4e08b7e448b8fd0ec2e06a1b"],"weaknesses":[],"ingestedAt":"2026-10-29T20:09:56.034Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2025/68xxx/CVE-2025-68319.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-68319","state":"PUBLISHED","datePublished":"2025-12-16T15:39:48.903Z","dateUpdated":"2026-10-21T12:38:12.214Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-12-16T14:48:05.295Z"},"containers":{"cna":{"title":"netconsole: Acquire su_mutex before navigating configs hierarchy","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetconsole: Acquire su_mutex before navigating configs hierarchy\n\nThere is a race between operations that iterate over the userdata\ncg_children list and concurrent add/remove of userdata items through\nconfigfs. The update_userdata() function iterates over the\nnt->userdata_group.cg_children list, and count_extradata_entries() also\niterates over this same list to count nodes.\n\nQuoting from Documentation/filesystems/configfs.rst:\n> A subsystem can navigate the cg_children list and the ci_parent pointer\n> to see the tree created by the subsystem.  This can race with configfs'\n> management of the hierarchy, so configfs uses the subsystem mutex to\n> protect modifications.  Whenever a subsystem wants to navigate the\n> hierarchy, it must do so under the protection of the subsystem\n> mutex.\n\nWithout proper locking, if a userdata item is added or removed\nconcurrently while these functions are iterating, the list can be\naccessed in an inconsistent state. For example, the list_for_each() loop\ncan reach a node that is being removed from the list by list_del_init()\nwhich sets the nodes' .next pointer to point to itself, so the loop will\nnever end (or reach the WARN_ON_ONCE in update_userdata() ).\n\nFix this by holding the configfs subsystem mutex (su_mutex) during all\noperations that iterate over cg_children.\nThis includes:\n- userdatum_value_store() which calls update_userdata() to iterate over\n  cg_children\n- All sysdata_*_enabled_store() functions which call\n  count_extradata_entries() to iterate over cg_children\n\nThe su_mutex must be acquired before dynamic_netconsole_mutex to avoid\npotential lock ordering issues, as configfs operations may already hold\nsu_mutex when calling into our code."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"df03f830d099f0811281a222aefdd9d400fa0b72","status":"affected","lessThan":"932c0c7a7ec413399febca5fe3dddf913bb5c924","versionType":"git"},{"version":"df03f830d099f0811281a222aefdd9d400fa0b72","status":"affected","lessThan":"ff70aa7e8cf05745fdba7258952a8bedf33ea336","versionType":"git"},{"version":"df03f830d099f0811281a222aefdd9d400fa0b72","status":"affected","lessThan":"d7d2fcf7ae31471b4e08b7e448b8fd0ec2e06a1b","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/netconsole.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.9","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.9","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.17.8","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/netconsole.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/932c0c7a7ec413399febca5fe3dddf913bb5c924"},{"url":"https://git.kernel.org/stable/c/ff70aa7e8cf05745fdba7258952a8bedf33ea336"},{"url":"https://git.kernel.org/stable/c/d7d2fcf7ae31471b4e08b7e448b8fd0ec2e06a1b"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-21T12:38:12.214Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.12.114"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.17.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.9","versionEndExcluding":"6.18"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}