CVE-2025-68194
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
16/12/2025
Last modified:
16/12/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
media: imon: make send_packet() more robust<br />
<br />
syzbot is reporting that imon has three problems which result in<br />
hung tasks due to forever holding device lock [1].<br />
<br />
First problem is that when usb_rx_callback_intf0() once got -EPROTO error<br />
after ictx->dev_present_intf0 became true, usb_rx_callback_intf0()<br />
resubmits urb after printk(), and resubmitted urb causes<br />
usb_rx_callback_intf0() to again get -EPROTO error. This results in<br />
printk() flooding (RCU stalls).<br />
<br />
Alan Stern commented [2] that<br />
<br />
In theory it&#39;s okay to resubmit _if_ the driver has a robust<br />
error-recovery scheme (such as giving up after some fixed limit on the<br />
number of errors or after some fixed time has elapsed, perhaps with a<br />
time delay to prevent a flood of errors). Most drivers don&#39;t bother to<br />
do this; they simply give up right away. This makes them more<br />
vulnerable to short-term noise interference during USB transfers, but in<br />
reality such interference is quite rare. There&#39;s nothing really wrong<br />
with giving up right away.<br />
<br />
but imon has a poor error-recovery scheme which just retries forever;<br />
this behavior should be fixed.<br />
<br />
Since I&#39;m not sure whether it is safe for imon users to give up upon any<br />
error code, this patch takes care of only union of error codes chosen from<br />
modules in drivers/media/rc/ directory which handle -EPROTO error (i.e.<br />
ir_toy, mceusb and igorplugusb).<br />
<br />
Second problem is that when usb_rx_callback_intf0() once got -EPROTO error<br />
before ictx->dev_present_intf0 becomes true, usb_rx_callback_intf0() always<br />
resubmits urb due to commit 8791d63af0cf ("[media] imon: don&#39;t wedge<br />
hardware after early callbacks"). Move the ictx->dev_present_intf0 test<br />
introduced by commit 6f6b90c9231a ("[media] imon: don&#39;t parse scancodes<br />
until intf configured") to immediately before imon_incoming_packet(), or<br />
the first problem explained above happens without printk() flooding (i.e.<br />
hung task).<br />
<br />
Third problem is that when usb_rx_callback_intf0() is not called for some<br />
reason (e.g. flaky hardware; the reproducer for this problem sometimes<br />
prevents usb_rx_callback_intf0() from being called),<br />
wait_for_completion_interruptible() in send_packet() never returns (i.e.<br />
hung task). As a workaround for such situation, change send_packet() to<br />
wait for completion with timeout of 10 seconds.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0213e4175abbb9dfcbf7c197e3817d527f459ad5
- https://git.kernel.org/stable/c/26f6a1dd5d81ad61a875a747698da6f27abf389b
- https://git.kernel.org/stable/c/519737af11c03590819a6eec2ad532cfdb87ea63
- https://git.kernel.org/stable/c/667afd4681781f60a644cd0d2ee6c59cb1c36208
- https://git.kernel.org/stable/c/8231e80118463be5598daaf266c1c83650f1948b
- https://git.kernel.org/stable/c/eecd203ada43a4693ce6fdd3a58ae10c7819252c
- https://git.kernel.org/stable/c/f58ab83b7b7133e6baefe03a46846c4f6ce45e2f
- https://git.kernel.org/stable/c/f7f3ecb4934fff782fa9bb1cd16e2290c041b22d



