Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
f22ecf9c14c12918e30f2179ef516e99eb8b2e49 to < 6c4ede3b771adbb3bf21ad4e8b8f2f6f6120c4f7affectedf22ecf9c14c12918e30f2179ef516e99eb8b2e49 to < 5aa0f9231cbacade065cedd8e9b5ebd067231171affected
Linux Linux
Default version status: affected
6.19affected0 to < 6.19unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected