All of lore.kernel.org
 help / color / mirror / Atom feed
* Question regarding swiotlb-xen in Linux kernel
@ 2019-04-18  7:36 ` Juergen Gross
  0 siblings, 0 replies; 12+ messages in thread
From: Juergen Gross @ 2019-04-18  7:36 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk; +Cc: xen-devel, Boris Ostrovsky

I'm currently investigating a problem related to swiotlb-xen. With a
specific driver a customer is capable to trigger a situation where a
MFN is mapped to multiple dom0 PFNs at the same time. There is no
guest involved, so this is not related to grants.

Wit a debug kernel I have managed to track the inconsistency to a
call of xen_destroy_contiguous_region() from xen_swiotlb_free_coherent()
where the region was obviously not contiguous.

xen_swiotlb_free_coherent() contains:

        if (((dev_addr + size - 1 <= dma_mask)) ||
            range_straddles_page_boundary(phys, size))
                xen_destroy_contiguous_region(phys, order);

Shouldn't it be either:

        if (((dev_addr + size - 1 <= dma_mask)) &&
            !range_straddles_page_boundary(phys, size))
                xen_destroy_contiguous_region(phys, order);


or:

        if (dev_addr + size - 1 <= dma_mask) {
            BUG_ON(range_straddles_page_boundary(phys, size));
            xen_destroy_contiguous_region(phys, order);
        }

as calling xen_destroy_contiguous_region() with a non-contiguous memory
region is a perfect receipt for a latent crash?

The remaining question is why the driver is calling
xen_swiotlb_free_coherent() for a non-contiguous region, of course.


Juergen

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2019-04-19 15:29 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-18  7:36 Question regarding swiotlb-xen in Linux kernel Juergen Gross
2019-04-18  7:36 ` [Xen-devel] " Juergen Gross
2019-04-18 21:09 ` Boris Ostrovsky
2019-04-18 21:09   ` [Xen-devel] " Boris Ostrovsky
2019-04-18 22:31   ` Joe Jin
2019-04-18 22:31     ` [Xen-devel] " Joe Jin
2019-04-19  5:47     ` Juergen Gross
2019-04-19  5:47       ` [Xen-devel] " Juergen Gross
2019-04-19 14:40       ` Joe Jin
2019-04-19 14:40         ` [Xen-devel] " Joe Jin
2019-04-19 15:28       ` Dongli Zhang
2019-04-19 15:28         ` [Xen-devel] " Dongli Zhang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.