On Thu, Aug 05, 2021 at 04:53:32PM +0800, Hongbo Li wrote: > From: Hongbo Li <herberthbli@xxxxxxxxxxx> > > We should set the additional space to 0 in mpi_resize(). > So use kcalloc() instead of kmalloc_array(). > > In lib/mpi/ec.c: > /**************** > * Resize the array of A to NLIMBS. the additional space is cleared > * (set to 0) [done by m_realloc()] > */ > int mpi_resize(MPI a, unsigned nlimbs) > > Like the comment of kernel's mpi_resize() said, the additional space > need to be set to 0, but when a->d is not NULL, it does not set. > > The kernel's mpi lib is from libgcrypt, the mpi resize in libgcrypt > is _gcry_mpi_resize() which set the additional space to 0. > > This bug may cause mpi api which use mpi_resize() get wrong result > under the condition of using the additional space without initiation. > If this condition is not met, the bug would not be triggered. > Currently in kernel, rsa, sm2 and dh use mpi lib, and they works well, > so the bug is not triggered in these cases. > > add_points_edwards() use the additional space directly, so it will > get a wrong result. > > Fixes: cdec9cb5167a ("crypto: GnuPG based MPI lib - source files (part 1)") > Signed-off-by: Hongbo Li <herberthbli@xxxxxxxxxxx> > --- > lib/mpi/mpiutil.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Patch applied. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt