diff options
author | 2016-08-02 22:05:42 +0200 | |
---|---|---|
committer | 2016-08-10 11:41:54 +0200 | |
commit | 2cccbb368a2bf27d98cf36bb424fbbf5572c0fab (patch) | |
tree | 83edb3161029df208d04341330a381b8c6e9f5a1 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | KVM: arm64: vgic-its: Handle errors from vgic_add_lpi (diff) | |
download | linux-dev-2cccbb368a2bf27d98cf36bb424fbbf5572c0fab.tar.xz linux-dev-2cccbb368a2bf27d98cf36bb424fbbf5572c0fab.zip |
KVM: arm64: vgic-its: Plug race in vgic_put_irq
Right now the following sequence of events can happen:
1. Thread X calls vgic_put_irq
2. Thread Y calls vgic_add_lpi
3. Thread Y gets lpi_list_lock
4. Thread X drops the ref count to 0 and blocks on lpi_list_lock
5. Thread Y finds the irq via the lpi_list_lock, raises the ref
count to 1, and release the lpi_list_lock.
6. Thread X proceeds and frees the irq.
Avoid this by holding the spinlock around the kref_put.
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions