Messages in this thread | | | From | Jia-Ju Bai <> | Subject | [BUG] fpga: dfl: possible ABBA deadlock in dfl_fpga_cdev_assign_port() and fme_pr() | Date | Tue, 23 Nov 2021 15:55:16 +0800 |
| |
Hello,
My static analysis tool reports a possible ABBA deadlock in the dfl driver in Linux 5.10:
dfl_fpga_cdev_assign_port() mutex_lock(&cdev->lock); --> Line 1067 (Lock A) mutex_lock(&pdata->lock); --> Line 1624 (Lock B)
fme_pr() mutex_lock(&pdata->lock); --> Line 126 (Lock B) 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
| |