From: Greg Kroah-Hartman Date: Fri, 6 Oct 2017 08:28:59 +0000 (+0200) Subject: 3.18-stable patches X-Git-Tag: v3.18.74~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e3c34a42cafb25ebdbdcb280699fe286857f8a1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches added patches: crypto-algif_skcipher-load-tx-sg-list-after-waiting.patch --- diff --git a/queue-3.18/crypto-algif_skcipher-load-tx-sg-list-after-waiting.patch b/queue-3.18/crypto-algif_skcipher-load-tx-sg-list-after-waiting.patch new file mode 100644 index 00000000000..18a3f7e1cb8 --- /dev/null +++ b/queue-3.18/crypto-algif_skcipher-load-tx-sg-list-after-waiting.patch @@ -0,0 +1,54 @@ +From 4f0414e54e4d1893c6f08260693f8ef84c929293 Mon Sep 17 00:00:00 2001 +From: Herbert Xu +Date: Mon, 18 Jan 2016 18:46:10 +0800 +Subject: crypto: algif_skcipher - Load TX SG list after waiting + +From: Herbert Xu + +commit 4f0414e54e4d1893c6f08260693f8ef84c929293 upstream. + +We need to load the TX SG list in sendmsg(2) after waiting for +incoming data, not before. + +[connoro@google.com: backport to 3.18, where the relevant logic is +located in skcipher_recvmsg() rather than skcipher_recvmsg_sync()] + +Reported-by: Dmitry Vyukov +Signed-off-by: Herbert Xu +Tested-by: Dmitry Vyukov +Signed-off-by: Connor O'Brien +Signed-off-by: Greg Kroah-Hartman +--- + crypto/algif_skcipher.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/crypto/algif_skcipher.c ++++ b/crypto/algif_skcipher.c +@@ -448,13 +448,6 @@ static int skcipher_recvmsg(struct kiocb + 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) { + err = skcipher_wait_for_data(sk, flags); +@@ -476,6 +469,13 @@ static int skcipher_recvmsg(struct kiocb + 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, + ctx->iv); diff --git a/queue-3.18/series b/queue-3.18/series index a7169a1155a..2beb3a451e8 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -31,3 +31,4 @@ ib-qib-fix-false-postive-maybe-uninitialized-warning.patch alsa-au88x0-avoid-theoretical-uninitialized-access.patch ttpci-address-stringop-overflow-warning.patch staging-nvec-remove-duplicated-const.patch +crypto-algif_skcipher-load-tx-sg-list-after-waiting.patch