On Tue, 2024-08-06 at 15:45 +0200, Niklas Schnelle wrote: > This fixes a crash when surprise hot-unplugging a PCI device. This crash > happens because during hot-unplug __iommu_group_set_domain_nofail() > attaching the default domain fails when the platform no longer > recognizes the device as it has already been removed and we end up with > a NULL domain pointer and UAF. This is exactly the case referred to in > the second comment in __iommu_device_set_domain() and just as stated > there if we can instead attach the blocking domain the UAF is prevented > as this can handle the already removed device. Implement the blocking > domain to use this handling. This would still leave us with a warning > for a failed attach. As failing to attach when the device is no longer > present is expected behavior turn this into an explicit -ENODEV error > and don't warn for it. Also change the error return for a NULL zdev to > -EIO as we don't want to ignore this case that would be a serious bug. > > Fixes: c76c067e488c ("s390/pci: Use dma-iommu layer") > Signed-off-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx> > --- > Note: I somewhat suspect this to be related to the following discussion > or at least we have seen the same backtraces in reports that we suspect > to be caused by the issue fixed with this patch. In the case I was able > to reproduce with vfio-pci pass-through to a KVM guest I got a different > trace though. Forgot the link: https://lore.kernel.org/all/8743264a-9700-4227-a556-5f931c720211@xxxxxxxxxx/ > > Organizational note: I'll be on vacation starting Thursday. Matt will > then take over and sent new revisions as necessary. > --- > drivers/iommu/iommu.c | 7 ++++--- ---8<---