On Tue, Mar 21, 2023 at 11:04:45AM +0530, Harsha Harsha wrote: > > +static inline int xilinx_copy_and_save_keypart(u8 **kpbuf, unsigned int *kplen, > + const u8 *buf, size_t sz) > +{ > + int nskip; > + > + for (nskip = 0; nskip < sz; nskip++) > + if (buf[nskip]) > + break; > + > + *kplen = sz - nskip; > + *kpbuf = kmemdup(buf + nskip, *kplen, GFP_KERNEL); > + if (!*kpbuf) > + return -ENOMEM; > + > + return 0; > +} ... > +static int xilinx_rsa_setkey(struct crypto_akcipher *tfm, const void *key, > + unsigned int keylen, bool private) > +{ > + struct xilinx_rsa_tfm_ctx *tctx = akcipher_tfm_ctx(tfm); > + struct rsa_key raw_key; > + int ret; > + > + if (private) > + ret = rsa_parse_priv_key(&raw_key, key, keylen); > + else > + ret = rsa_parse_pub_key(&raw_key, key, keylen); > + if (ret) > + goto n_key; > + > + ret = xilinx_copy_and_save_keypart(&tctx->n_buf, &tctx->n_len, > + raw_key.n, raw_key.n_sz); What happens when you call setkey twice? Wouldn't this leak memory? Cheers, -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt