diff --git a/crypto/algif_skcipher.c b/crypto/algif_skcipher.c index 83187f497c7c..9b3b806fae52 100644 --- a/crypto/algif_skcipher.c +++ b/crypto/algif_skcipher.c @@ -441,12 +441,6 @@ static int skcipher_recvmsg(struct kiocb *unused, struct socket *sock, char __user *from = iov->iov_base; while (seglen) { - sgl = list_first_entry(&ctx->tsgl, - struct skcipher_sg_list, list); - sg = sgl->sg; - - while (!sg->length) - sg++; used = ctx->used; if (!used) { @@ -468,6 +462,12 @@ static int skcipher_recvmsg(struct kiocb *unused, struct socket *sock, err = -EINVAL; if (!used) goto free; + sgl = list_first_entry(&ctx->tsgl, + struct skcipher_sg_list, list); + sg = sgl->sg; + + while (!sg->length) + sg++; ablkcipher_request_set_crypt(&ctx->req, sg, ctx->rsgl.sg, used,