On Wed, May 27, 2015 at 05:43:05PM +0800, Herbert Xu wrote:
> Tom Lendacky <thomas.lenda...@amd.com> wrote:
> > Scatter gather lists can be created with more available entries than are
> > actually used (e.g. using sg_init_table() to reserve a specific number
> > of sg entries, but in actuality using something less than that based on
> > the data length).  The caller sometimes fails to mark the last entry
> > with sg_mark_end().  In these cases, sg_nents() will return the original
> > size of the sg list as opposed to the actual number of sg entries that
> > contain valid data.
> > 
> > On arm64, if the sg_nents() value is used in a call to dma_map_sg() in
> > this situation, then it causes a BUG_ON in lib/swiotlb.c because an
> > "empty" sg list entry results in dma_capable() returning false and
> > swiotlb trying to create a bounce buffer of size 0. This occurred in
> > the userspace crypto interface before being fixed by
> > 
> > 0f477b655a52 ("crypto: algif - Mark sgl end at the end of data")
> > 
> > Protect against this in the future by counting the number of sg entries
> > needed to meet the length requirement and supplying that value to
> > dma_map_sg().
> 
> Is this needed for any reason other than this bug that's already
> been fixed?

Could this be needed if you have a properly marked SG list say of
100 bytes but len is only 10 bytes?

Cheers,
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to