[U-Boot] [PATCH v2] crypto/fsl: fix BLOB encapsulation and decapsulation

Sumit Garg sumit.garg at nxp.com
Fri Jan 5 13:18:24 UTC 2018


> From: Clemens Gruber [mailto:clemens.gruber at pqgruber.com]
> Sent: Friday, January 05, 2018 6:32 PM
> 
> Hi Sumit, Fabio, York,
> 
> On Fri, Jan 05, 2018 at 06:47:36AM +0000, Sumit Garg wrote:
> > Hi Clemens, York, Fabio,
> >
> > > -----Original Message-----
> > > From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of
> > > Fabio Estevam
> > > Sent: Friday, January 05, 2018 3:27 AM
> > > To: York Sun <york.sun at nxp.com>
> > > Cc: Breno Matheus Lima <breno.lima at nxp.com>; u-boot at lists.denx.de;
> > > clemens.gruber at pqgruber.com; Fabio Estevam
> <fabio.estevam at nxp.com>
> > > Subject: [U-Boot] [PATCH v2] crypto/fsl: fix BLOB encapsulation and
> > > decapsulation
> > >
> >
> > <snip>
> >
> > >
> > >  int blob_decap(u8 *key_mod, u8 *src, u8 *dst, u32 len)  {
> > > -	int ret, i = 0;
> > > +	ALLOC_CACHE_ALIGN_BUFFER(u8, aligned_key_mod, 16);
> > > +	u8 *aligned_src, *aligned_dst;
> > > +	int ret, size, i = 0;
> > >  	u32 *desc;
> > >
> > >  	printf("\nDecapsulating blob to get data\n");
> > > -	desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
> > > +	desc = malloc_cache_aligned(sizeof(int) * MAX_CAAM_DESCSIZE);
> > >  	if (!desc) {
> > >  		debug("Not enough memory for descriptor allocation\n");
> > > -		return -1;
> > > +		return -ENOMEM;
> > >  	}
> > >
> > > -	inline_cnstr_jobdesc_blob_decap(desc, key_mod, src, dst, len);
> > > +	aligned_src = malloc_cache_aligned(BLOB_SIZE(len));
> > > +	aligned_dst = malloc_cache_aligned(len);
> >
> > Please don't use malloc here as these blob_encap and blob_decap
> commands are used to blobify or deblobify images of maximum sizes upto 32
> MB.
> >
> > But u-boot malloc pool is of size:
> >
> > /* Size of malloc() pool */
> > #define CONFIG_SYS_MALLOC_LEN           (CONFIG_ENV_SIZE + 2048 * 1024)
> >
> > So please remove malloc from this patch for source and destination images as
> it will fail for larger images.
> 
> I could use ALLOC_CACHE_ALIGN_BUFFER to store the aligned_src and _dst
> buffers on the stack instead of the malloc pool.

I don't think stack is enough to save src and dest images (max. size: approx. 64MB).

> 
> Or would you rather remove the copying and require the caller of
> blob_encap/_decap to pass correctly aligned addresses?
> 

Yes you could put check for input src and dest addresses to be cache aligned and
print error to make user aware to pass cache aligned addresses. Also double copying will
be much overhead for encap or decap of images (size 32MB).

-Sumit

> York: Should I send a v3 or a fixup patch ontop of v2.
> 
> Thanks,
> Clemens


More information about the U-Boot mailing list