On Mon, Aug 21, 2017 at 03:40:41PM +0300, Oleksandr Tyshchenko wrote: > From: Oleksandr Tyshchenko <[email protected]> > > In ipmmu_domain_init_context() we are trying to allocate context and > if allocation fails we will call free_io_pgtable_ops(), > but "domain->context_id" hasn't been initialized yet (likely it is 0 > because of kzalloc). Having the following call stack: > free_io_pgtable_ops() -> io_pgtable_tlb_flush_all() -> > ipmmu_tlb_flush_all() -> ipmmu_tlb_invalidate() > we will get a mistaken cache flush for a context pointed by > uninitialized "domain->context_id". > > So, set context_id to non-existent value (IPMMU_CTX_MAX) before calling > free_io_pgtable_ops() and check it for a valid value (< IPMMU_CTX_MAX) > before calling ipmmu_tlb_invalidate(). > > Signed-off-by: Oleksandr Tyshchenko <[email protected]> > --- > drivers/iommu/ipmmu-vmsa.c | 4 ++++ > 1 file changed, 4 insertions(+)
Applied, thanks. _______________________________________________ iommu mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/iommu
