Searched hist:"9791 ec7d" (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/drivers/irqchip/ |
H A D | irq-gic-v3-its.c | 9791ec7d Tue Jan 29 04:02:33 CST 2019 Marc Zyngier <marc.zyngier@arm.com> irqchip/gic-v3-its: Plug allocation race for devices sharing a DevID
On systems or VMs where multiple devices share a single DevID (because they sit behind a PCI bridge, or because the HW is broken in funky ways), we reuse the save its_device structure in order to reflect this.
It turns out that there is a distinct lack of locking when looking up the its_device, and two device being probed concurrently can result in double allocations. That's obviously not nice.
A solution for this is to have a per-ITS mutex that serializes device allocation.
A similar issue exists on the freeing side, which can run concurrently with the allocation. On top of now taking the appropriate lock, we also make sure that a shared device is never freed, as we have no way to currently track the life cycle of such object.
Reported-by: Zheng Xiang <zhengxiang9@huawei.com> Tested-by: Zheng Xiang <zhengxiang9@huawei.com> Cc: stable@vger.kernel.org Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
|