{"id":"CVE-2022-50202","summary":"PM: hibernate: defer device probing when resuming from hibernation","details":"In the Linux kernel, the following vulnerability has been resolved:\n\nPM: hibernate: defer device probing when resuming from hibernation\n\nsyzbot is reporting hung task at misc_open() [1], for there is a race\nwindow of AB-BA deadlock which involves probe_count variable. Currently\nwait_for_device_probe() from snapshot_open() from misc_open() can sleep\nforever with misc_mtx held if probe_count cannot become 0.\n\nWhen a device is probed by hub_event() work function, probe_count is\nincremented before the probe function starts, and probe_count is\ndecremented after the probe function completed.\n\nThere are three cases that can prevent probe_count from dropping to 0.\n\n  (a) A device being probed stopped responding (i.e. broken/malicious\n      hardware).\n\n  (b) A process emulating a USB device using /dev/raw-gadget interface\n      stopped responding for some reason.\n\n  (c) New device probe requests keeps coming in before existing device\n      probe requests complete.\n\nThe phenomenon syzbot is reporting is (b). A process which is holding\nsystem_transition_mutex and misc_mtx is waiting for probe_count to become\n0 inside wait_for_device_probe(), but the probe function which is called\n from hub_event() work function is waiting for the processes which are\nblocked at mutex_lock(&misc_mtx) to respond via /dev/raw-gadget interface.\n\nThis patch mitigates (b) by deferring wait_for_device_probe() from\nsnapshot_open() to snapshot_write() and snapshot_ioctl(). Please note that\nthe possibility of (b) remains as long as any thread which is emulating a\nUSB device via /dev/raw-gadget interface can be blocked by uninterruptible\nblocking operations (e.g. mutex_lock()).\n\nPlease also note that (a) and (c) are not addressed. Regarding (c), we\nshould change the code to wait for only one device which contains the\nimage for resuming from hibernation. I don't know how to address (a), for\nuse of timeout for wait_for_device_probe() might result in loss of user\ndata in the image. Maybe we should require the userland to wait for the\nimage device before opening /dev/snapshot interface.","modified":"2026-04-11T12:44:55.057695Z","published":"2025-06-18T11:03:43.874Z","related":["SUSE-SU-2025:02264-1","SUSE-SU-2025:02321-1","SUSE-SU-2025:02322-1","SUSE-SU-2025:02537-1"],"database_specific":{"cna_assigner":"Linux","osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/50xxx/CVE-2022-50202.json"},"references":[{"type":"WEB","url":"https://git.kernel.org/stable/c/003a456ae6f70bb97e436e02fc5105be577c1570"},{"type":"WEB","url":"https://git.kernel.org/stable/c/2f0e18e0db42f4f8bc87d3d98333680065ceeff8"},{"type":"WEB","url":"https://git.kernel.org/stable/c/3c48d3067eaf878642276f053575a5c642600a50"},{"type":"WEB","url":"https://git.kernel.org/stable/c/5a283b59bce72c05c60e9f0fa92a28b5b850d8bb"},{"type":"WEB","url":"https://git.kernel.org/stable/c/8386c414e27caba8501119948e9551e52b527f59"},{"type":"WEB","url":"https://git.kernel.org/stable/c/8c90947e5f1801e6c7120021c6ea0f3ad6a4eb91"},{"type":"WEB","url":"https://git.kernel.org/stable/c/b8e1ae9433d7bd95f2dcc044a7a6f20a4c40d258"},{"type":"WEB","url":"https://git.kernel.org/stable/c/f7042cf9dd40733f387b7cac021e626c74b8856f"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/50xxx/CVE-2022-50202.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-50202"},{"type":"PACKAGE","url":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"c751085943362143f84346d274e0011419c84202"},{"fixed":"8c90947e5f1801e6c7120021c6ea0f3ad6a4eb91"},{"fixed":"5a283b59bce72c05c60e9f0fa92a28b5b850d8bb"},{"fixed":"3c48d3067eaf878642276f053575a5c642600a50"},{"fixed":"003a456ae6f70bb97e436e02fc5105be577c1570"},{"fixed":"2f0e18e0db42f4f8bc87d3d98333680065ceeff8"},{"fixed":"b8e1ae9433d7bd95f2dcc044a7a6f20a4c40d258"},{"fixed":"f7042cf9dd40733f387b7cac021e626c74b8856f"},{"fixed":"8386c414e27caba8501119948e9551e52b527f59"}]}],"database_specific":{"source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-50202.json"}},{"package":{"name":"Kernel","ecosystem":"Linux"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.6.30"},{"fixed":"4.14.291"}]},{"type":"ECOSYSTEM","events":[{"introduced":"4.15.0"},{"fixed":"4.19.256"}]},{"type":"ECOSYSTEM","events":[{"introduced":"4.20.0"},{"fixed":"5.4.211"}]},{"type":"ECOSYSTEM","events":[{"introduced":"5.5.0"},{"fixed":"5.10.137"}]},{"type":"ECOSYSTEM","events":[{"introduced":"5.11.0"},{"fixed":"5.15.61"}]},{"type":"ECOSYSTEM","events":[{"introduced":"5.16.0"},{"fixed":"5.18.18"}]},{"type":"ECOSYSTEM","events":[{"introduced":"5.19.0"},{"fixed":"5.19.2"}]}],"database_specific":{"source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-50202.json"}}],"schema_version":"1.7.5"}