In the Linux kernel, the following vulnerability has been resolved:
dma: xilinx_dpdma: Fix locking
There are several places where either chan->lock or chan->vchan.lock was not held. Add appropriate locking. This fixes lockdep warnings like
[ 31.077578] ------------[ cut here ]------------ [ 31.077831] WARNING: CPU: 2 PID: 40 at drivers/dma/xilinx/xilinxdpdma.c:834 xilinxdpdmachanqueuetransfer+0x274/0x5e0 [ 31.077953] Modules linked in: [ 31.078019] CPU: 2 PID: 40 Comm: kworker/u12:1 Not tainted 6.6.20+ #98 [ 31.078102] Hardware name: xlnx,zynqmp (DT) [ 31.078169] Workqueue: eventsunbound deferredprobeworkfunc [ 31.078272] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 31.078377] pc : xilinxdpdmachanqueuetransfer+0x274/0x5e0 [ 31.078473] lr : xilinxdpdmachanqueuetransfer+0x270/0x5e0 [ 31.078550] sp : ffffffc083bb2e10 [ 31.078590] x29: ffffffc083bb2e10 x28: 0000000000000000 x27: ffffff880165a168 [ 31.078754] x26: ffffff880164e920 x25: ffffff880164eab8 x24: ffffff880164d480 [ 31.078920] x23: ffffff880165a148 x22: ffffff880164e988 x21: 0000000000000000 [ 31.079132] x20: ffffffc082aa3000 x19: ffffff880164e880 x18: 0000000000000000 [ 31.079295] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 [ 31.079453] x14: 0000000000000000 x13: ffffff8802263dc0 x12: 0000000000000001 [ 31.079613] x11: 0001ffc083bb2e34 x10: 0001ff880164e98f x9 : 0001ffc082aa3def [ 31.079824] x8 : 0001ffc082aa3dec x7 : 0000000000000000 x6 : 0000000000000516 [ 31.079982] x5 : ffffffc7f8d43000 x4 : ffffff88003c9c40 x3 : ffffffffffffffff [ 31.080147] x2 : ffffffc7f8d43000 x1 : 00000000000000c0 x0 : 0000000000000000 [ 31.080307] Call trace: [ 31.080340] xilinxdpdmachanqueuetransfer+0x274/0x5e0 [ 31.080518] xilinxdpdmaissuepending+0x11c/0x120 [ 31.080595] zynqmpdisplayerupdate+0x180/0x3ac [ 31.080712] zynqmpdpsubplaneatomicupdate+0x11c/0x21c [ 31.080825] drmatomichelpercommitplanes+0x20c/0x684 [ 31.080951] drmatomichelpercommittail+0x5c/0xb0 [ 31.081139] committail+0x234/0x294 [ 31.081246] drmatomichelpercommit+0x1f8/0x210 [ 31.081363] drmatomiccommit+0x100/0x140 [ 31.081477] drmclientmodesetcommitatomic+0x318/0x384 [ 31.081634] drmclientmodesetcommitlocked+0x8c/0x24c [ 31.081725] drmclientmodesetcommit+0x34/0x5c [ 31.081812] _drmfbhelperrestorefbdevmodeunlocked+0x104/0x168 [ 31.081899] drmfbhelpersetpar+0x50/0x70 [ 31.081971] fbconinit+0x538/0xc48 [ 31.082047] visualinit+0x16c/0x23c [ 31.082207] dobindcondriver.isra.0+0x2d0/0x634 [ 31.082320] dotakeoverconsole+0x24c/0x33c [ 31.082429] dofbcontakeover+0xbc/0x1b0 [ 31.082503] fbconfbregistered+0x2d0/0x34c [ 31.082663] registerframebuffer+0x27c/0x38c [ 31.082767] _drmfbhelperinitialconfigandunlock+0x5c0/0x91c [ 31.082939] drmfbhelperinitialconfig+0x50/0x74 [ 31.083012] drmfbdevdmaclienthotplug+0xb8/0x108 [ 31.083115] drmclientregister+0xa0/0xf4 [ 31.083195] drmfbdevdmasetup+0xb0/0x1cc [ 31.083293] zynqmpdpsubdrminit+0x45c/0x4e0 [ 31.083431] zynqmpdpsubprobe+0x444/0x5e0 [ 31.083616] platformprobe+0x8c/0x13c [ 31.083713] reallyprobe+0x258/0x59c [ 31.083793] _driverprobedevice+0xc4/0x224 [ 31.083878] driverprobedevice+0x70/0x1c0 [ 31.083961] _deviceattachdriver+0x108/0x1e0 [ 31.084052] busforeachdrv+0x9c/0x100 [ 31.084125] _deviceattach+0x100/0x298 [ 31.084207] deviceinitialprobe+0x14/0x20 [ 31.084292] busprobedevice+0xd8/0xdc [ 31.084368] deferredprobeworkfunc+0x11c/0x180 [ 31.084451] processonework+0x3ac/0x988 [ 31.084643] workerthread+0x398/0x694 [ 31.084752] kthread+0x1bc/0x1c0 [ 31.084848] retfromfork+0x10/0x20 [ 31.084932] irq event stamp: 64549 [ 31.084970] hardirqs last enabled at (64548): [<ffffffc081adf35c>] rawspinunlockirqrestore+0x80/0x90 [ 31.085157] ---truncated---