Re: [RFC PATCH] iommu/amd: fix a race in fetch_pte()

From: Qian Cai
Date: Sat Apr 18 2020 - 09:01:42 EST




> On Apr 18, 2020, at 8:10 AM, Joerg Roedel <joro@xxxxxxxxxx> wrote:
>
> Yes, your patch still looks racy. You need to atomically read
> domain->pt_root to a stack variable and derive the pt_root pointer and
> the mode from that variable instead of domain->pt_root directly. If you
> read the domain->pt_root twice there could still be an update between
> the two reads.
> Probably the lock in increase_address_space() can also be avoided if
> pt_root is updated using cmpxchg()?

Hard to tell without testing further. Iâll leave that optimization in the future, and focus on fixing those races first.