From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752633AbcFNRW1 (ORCPT ); Tue, 14 Jun 2016 13:22:27 -0400 Received: from mga04.intel.com ([192.55.52.120]:6081 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751364AbcFNRWZ (ORCPT ); Tue, 14 Jun 2016 13:22:25 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,471,1459839600"; d="scan'208";a="121789565" Date: Tue, 14 Jun 2016 10:22:15 -0700 (PDT) From: Mat Martineau X-X-Sender: mjmartin@animeshb-mobl.amr.corp.intel.com To: smueller@chronox.de cc: Tadeusz Struk , dhowells@redhat.com, herbert@gondor.apana.org.au, linux-api@vger.kernel.org, marcel@holtmann.org, linux-kernel@vger.kernel.org, keyrings@vger.kernel.org, linux-crypto@vger.kernel.org, dwmw2@infradead.org, davem@davemloft.net Subject: Re: [PATCH v6 3/6] crypto: AF_ALG -- add asymmetric cipher interface In-Reply-To: <20160515041701.15888.53830.stgit@tstruk-mobl1> Message-ID: References: <20160515041645.15888.94903.stgit@tstruk-mobl1> <20160515041701.15888.53830.stgit@tstruk-mobl1> User-Agent: Alpine 2.20 (OSX 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Stephan, On Sat, 14 May 2016, Tadeusz Struk wrote: > From: Stephan Mueller > > This patch adds the user space interface for asymmetric ciphers. The > interface allows the use of sendmsg as well as vmsplice to provide data. > > This version has been rebased on top of 4.6 and a few chackpatch issues > have been fixed. > > Signed-off-by: Stephan Mueller > Signed-off-by: Tadeusz Struk > --- > crypto/algif_akcipher.c | 542 +++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 542 insertions(+) > create mode 100644 crypto/algif_akcipher.c > > diff --git a/crypto/algif_akcipher.c b/crypto/algif_akcipher.c > new file mode 100644 > index 0000000..6342b6e > --- /dev/null > +++ b/crypto/algif_akcipher.c > + > +static int akcipher_sendmsg(struct socket *sock, struct msghdr *msg, > + size_t size) > +{ > + struct sock *sk = sock->sk; > + struct alg_sock *ask = alg_sk(sk); > + struct akcipher_ctx *ctx = ask->private; > + struct akcipher_sg_list *sgl = &ctx->tsgl; > + struct af_alg_control con = {}; > + long copied = 0; > + int op = 0; > + bool init = 0; > + int err; > + > + if (msg->msg_controllen) { > + err = af_alg_cmsg_send(msg, &con); > + if (err) > + return err; > + > + init = 1; > + switch (con.op) { > + case ALG_OP_VERIFY: > + case ALG_OP_SIGN: > + case ALG_OP_ENCRYPT: > + case ALG_OP_DECRYPT: > + op = con.op; > + break; > + default: > + return -EINVAL; > + } > + } > + > + lock_sock(sk); > + if (!ctx->more && ctx->used) > + goto unlock; err might be uninitialised at this goto. Should it be set to something like -EALREADY to indicate that data is already queued for a different crypto op? > +unlock: > + akcipher_data_wakeup(sk); > + release_sock(sk); > + > + return err ?: copied; > +} Regards, -- Mat Martineau Intel OTC