Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: dm: limit target bio polling to one shot dm_poll_bio() is the ->poll_bio() callback for a stacked dm device. The caller only knows about the dm queue, so it may decide to do a spinning poll if it thinks a single queue is being polled. Passing those flags unchanged to the mapped clone lets blk_mq_poll() spin on a target queue from inside dm_poll_bio(). With io_uring IOPOLL on a dm-stripe target this can keep a task in dm_poll_bio() -> bio_poll() -> blk_mq_poll() long enough to trigger an RCU CPU stall, before io_uring gets back to io_iopoll_check() and its need_resched() check. Keep dm's ->poll_bio() bounded by forcing one-shot polling for target bios. The caller can invoke dm_poll_bio() again if it wants to keep polling, and it also gets a chance to reap completions or reschedule between passes.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected f22ecf9c14c12918e30f2179ef516e99eb8b2e49 before 6c4ede3b771adbb3bf21ad4e8b8f2f6f6120c4f7; affected f22ecf9c14c12918e30f2179ef516e99eb8b2e49 before 5aa0f9231cbacade065cedd8e9b5ebd067231171 |
| Linux / Linux | affected 6.19; unaffected 0 before 6.19; unaffected 7.1.5 through 7.1.*; unaffected 7.2 through * |
CWE
No CWE identifiers supplied.