In the Linux kernel, the following vulnerability has been resolved:
io_uring/rw: defer fsnotify calls to task context
We can't call these off the kiocb completion as that might be off soft/hard irq context. Defer the calls to when we process the task_work for this request. That avoids valid complaints like:
stack backtrace: CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.0.0-rc6-syzkaller-00321-g105a36f3694e #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/26/2022 Call Trace: <IRQ> _dumpstack lib/dumpstack.c:88 [inline] dumpstacklvl+0xcd/0x134 lib/dumpstack.c:106 printusagebug kernel/locking/lockdep.c:3961 [inline] validstate kernel/locking/lockdep.c:3973 [inline] marklockirq kernel/locking/lockdep.c:4176 [inline] marklock.part.0.cold+0x18/0xd8 kernel/locking/lockdep.c:4632 marklock kernel/locking/lockdep.c:4596 [inline] markusage kernel/locking/lockdep.c:4527 [inline] _lockacquire+0x11d9/0x56d0 kernel/locking/lockdep.c:5007 lockacquire kernel/locking/lockdep.c:5666 [inline] lockacquire+0x1ab/0x570 kernel/locking/lockdep.c:5631 _fsreclaimacquire mm/pagealloc.c:4674 [inline] fsreclaimacquire+0x115/0x160 mm/pagealloc.c:4688 mightalloc include/linux/sched/mm.h:271 [inline] slabpreallochook mm/slab.h:700 [inline] slaballoc mm/slab.c:3278 [inline] _kmemcachealloclru mm/slab.c:3471 [inline] kmemcachealloc+0x39/0x520 mm/slab.c:3491 fanotifyallocfidevent fs/notify/fanotify/fanotify.c:580 [inline] fanotifyallocevent fs/notify/fanotify/fanotify.c:813 [inline] fanotifyhandleevent+0x1130/0x3f40 fs/notify/fanotify/fanotify.c:948 sendtogroup fs/notify/fsnotify.c:360 [inline] fsnotify+0xafb/0x1680 fs/notify/fsnotify.c:570 _fsnotifyparent+0x62f/0xa60 fs/notify/fsnotify.c:230 fsnotifyparent include/linux/fsnotify.h:77 [inline] fsnotifyfile include/linux/fsnotify.h:99 [inline] fsnotifyaccess include/linux/fsnotify.h:309 [inline] _iocompleterwcommon+0x485/0x720 iouring/rw.c:195 iocompleterw+0x1a/0x1f0 iouring/rw.c:228 iomapdiocompletework fs/iomap/direct-io.c:144 [inline] iomapdiobioendio+0x438/0x5e0 fs/iomap/direct-io.c:178 bioendio+0x5f9/0x780 block/bio.c:1564 reqbioendio block/blk-mq.c:695 [inline] blkupdaterequest+0x3fc/0x1300 block/blk-mq.c:825 scsiendrequest+0x7a/0x9a0 drivers/scsi/scsilib.c:541 scsiiocompletion+0x173/0x1f70 drivers/scsi/scsilib.c:971 scsicomplete+0x122/0x3b0 drivers/scsi/scsilib.c:1438 blkcompletereqs+0xad/0xe0 block/blk-mq.c:1022 _dosoftirq+0x1d3/0x9c6 kernel/softirq.c:571 invokesoftirq kernel/softirq.c:445 [inline] _irqexitrcu+0x123/0x180 kernel/softirq.c:650 irqexitrcu+0x5/0x20 kernel/softirq.c:662 common_interrupt+0xa9/0xc0 arch/x86/kernel/irq.c:240
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/50xxx/CVE-2022-50705.json"
}