Messages in this thread | | | From | "Wu, Hao" <> | Subject | RE: [BUG] fpga: dfl: possible ABBA deadlock in dfl_fpga_cdev_assign_port() and fme_pr() | Date | Wed, 24 Nov 2021 15:59:57 +0000 |
| |
> > dfl_fpga_cdev_assign_port() > mutex_lock(&cdev->lock); --> Line 1067 (Lock A) > mutex_lock(&pdata->lock); --> Line 1624 (Lock B)
This lock is from port platform device.
> > fme_pr() > mutex_lock(&pdata->lock); --> Line 126 (Lock B)
This lock is from fme platform device.
Actually they are different locks, but yes, maybe we should consider improving the naming to avoid misunderstanding.
Thanks Hao
> fpga_region_program_fpga() > fpga_bridges_enable() > fpga_bridge_enable() > fme_bridge_enable_set() --> function pointer via > "bridge->br_ops->enable_set()" > dfl_fpga_cdev_find_port() > mutex_lock(&cdev->lock); --> Line 499 (LockA) > > When dfl_fpga_cdev_assign_port() and fme_pr() are concurrently executed, > the deadlock can occur. > > I am not quite sure whether this possible deadlock is real and how to > fix it if it is real. > Any feedback would be appreciated, thanks > > Reported-by: TOTE Robot <oslab@tsinghua.edu.cn> > > > Best wishes, > Jia-Ju Bai
| |