Messages in this thread | | | Subject | Re: [PATCH] iommu/vt-d: Fix scatterlist offset handling | From | David Woodhouse <> | Date | Tue, 03 Oct 2017 23:16:16 +0100 |
| |
On Tue, 2017-10-03 at 19:05 +0100, Robin Murphy wrote: > > Now, there are indeed plenty of drivers and subsystems which do work on > lists of explicitly single pages - anything doing some variant of > "addr = kmap_atomic(sg_page(sg)) + sg->offset;" is easy to spot - but I > don't think DMA API implementations are in a position to make any kind > of assumption; nearly all of them just shut up and handle sg->length > bytes from sg_phys(sg) without questioning the caller, and I reckon > that's exactly what they should be doing.
So what's the point in sg->page in the first place? If even the *offset* can be greater than page size, it isn't even the *first* page (as you called it). Why aren't we just using a physical address, instead of an arbitrary page and an offset from that?
Can we have *negative* sg->offset too? :) [unhandled content-type:application/x-pkcs7-signature] | |