On 16/04/25 12:33, Herbert Xu wrote: > On Fri, Apr 11, 2025 at 02:43:22PM +0530, T Pratham wrote: >> + // Need to do a timeout to ensure mutex gets unlocked if DMA callback fails for any reason >> + ret = wait_for_completion_timeout(&actx->aes_compl, msecs_to_jiffies(DTHE_DMA_TIMEOUT_MS)); > You cannot wait here. The preferred method of indicating completion > is through an interrupt. If you hardware can't do that, then you need > to use crypto_engine and poll in that thread. Sure, will change the strategy and update this. >> +static int dthe_aes_crypt(struct skcipher_request *req, int enc) >> +{ >> + struct dthe_tfm_ctx *ctx = crypto_skcipher_ctx(crypto_skcipher_reqtfm(req)); >> + >> + /* >> + * If data is not a multiple of AES_BLOCK_SIZE, need to return -EINVAL >> + * If data length input is zero, no need to do any operation. >> + */ >> + if (req->cryptlen % AES_BLOCK_SIZE) { >> + skcipher_request_complete(req, -EINVAL); > The completion function must not be called unless you first > returned EINPROGRESS. > > PS Please set the bit KERN_DRIVER_ONLY in cra_flags. KERN_DRIVER_ONLY bit is set. > > Cheers, Thanks. Regards T Pratham <t-pratham@xxxxxx>