Message ID | 1439363150-8661-32-git-send-email-hch@lst.de (mailing list archive) |
---|---|
State | Awaiting Upstream |
Headers | show |
On Wed, Aug 12, 2015 at 12:05 AM, Christoph Hellwig <hch@lst.de> wrote: > + for_each_sg(sg, s, nents, i) { > + if (sg_has_page(s)) > + kmemcheck_mark_initialized(sg_virt(s), s->length); > + } [ Again, I'm responding to one random patch - this pattern was in other patches too. ] A question: do we actually expect to mix page-less and pageful SG entries in the same SG list? How does that happen? (I'm not saying it can't, I'm just wondering where people expect this to happen). IOW, maybe it would be valid to have a rule saying "a SG list is either all pageful or pageless, never mixed", and then have the "if" statement outside the loop rather than inside. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Christoph, On 12 August 2015 at 08:05, Christoph Hellwig <hch@lst.de> wrote: > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > include/asm-generic/dma-mapping-common.h | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/include/asm-generic/dma-mapping-common.h b/include/asm-generic/dma-mapping-common.h > index 940d5ec..afc3eaf 100644 > --- a/include/asm-generic/dma-mapping-common.h > +++ b/include/asm-generic/dma-mapping-common.h > @@ -51,8 +51,10 @@ static inline int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, > int i, ents; > struct scatterlist *s; > > - for_each_sg(sg, s, nents, i) > - kmemcheck_mark_initialized(sg_virt(s), s->length); > + for_each_sg(sg, s, nents, i) { > + if (sg_has_page(s)) > + kmemcheck_mark_initialized(sg_virt(s), s->length); > + } Just a nitpick for the subject, it should say "kmemcheck" rather than "kmemleak" (different features ;)).
On Wed, Aug 12, 2015 at 09:05:15AM -0700, Linus Torvalds wrote: > [ Again, I'm responding to one random patch - this pattern was in > other patches too. ] > > A question: do we actually expect to mix page-less and pageful SG > entries in the same SG list? > > How does that happen? Both for DAX and the video buffer case people could do direct I/O spanning the boundary between such a VMA and a normal one unless we add special code to prevent that. Right now I don't think it's all that useful, but then again it doesn't seem harmful either and adding those checks might add up. -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/asm-generic/dma-mapping-common.h b/include/asm-generic/dma-mapping-common.h index 940d5ec..afc3eaf 100644 --- a/include/asm-generic/dma-mapping-common.h +++ b/include/asm-generic/dma-mapping-common.h @@ -51,8 +51,10 @@ static inline int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int i, ents; struct scatterlist *s; - for_each_sg(sg, s, nents, i) - kmemcheck_mark_initialized(sg_virt(s), s->length); + for_each_sg(sg, s, nents, i) { + if (sg_has_page(s)) + kmemcheck_mark_initialized(sg_virt(s), s->length); + } BUG_ON(!valid_dma_direction(dir)); ents = ops->map_sg(dev, sg, nents, dir, attrs); BUG_ON(ents < 0);
Signed-off-by: Christoph Hellwig <hch@lst.de> --- include/asm-generic/dma-mapping-common.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)