Re: [PATCH 2/3] crypto: algif_akcipher user space interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Mittwoch, 22. Juli 2015, 09:01:15 schrieb Tadeusz Struk:

Hi Tadeusz,

> On 07/21/2015 03:13 PM, Stephan Mueller wrote:
> > +static ssize_t akcipher_sendpage(struct socket *sock, struct page *page,
> > +				 int offset, size_t size, int flags)
> > +{
> > +	struct sock *sk = sock->sk;
> > +	struct alg_sock *ask = alg_sk(sk);
> > +	struct akcipher_ctx *ctx = ask->private;
> > +	int err = -EINVAL;
> > +
> > +	if (flags & MSG_SENDPAGE_NOTLAST)
> > +		flags |= MSG_MORE;
> > +
> > +	lock_sock(sk);
> > +
> > +	/*
> > +	 * We do not allow mixing of sendmsg and sendpage calls as this would
> > +	 * require a hairy memory management.
> > +	 *
> > +	 * This check also guards against double call of sendpage.
> > +	 * We require that the output buffer size must be provided with one
> > +	 * sendpage request as otherwise we cannot have a linear buffer 
required
> > +	 * by the akcipher API.
> > +	 */
> > +	if (ctx->req_data_ptr)
> > +		goto unlock;
> 
> Shouldn't we be more flexible and copy the data if it comes in chunks here
> too. The user doesn't really have control over this and it would look bad
> if splice would randomly fail for a valid buffer.

I concur with you. But we have only two options:

- either use SGLs which the current akcipher API does not do

- or do a memcpy of the sendpage data into the internal buffer

As the sendpage already has a speed penalty, I did not like the latter one. 
Based on my measurements for AEAD, Hash and skicpher, sendpage starts to 
become faster than sendmsg with input buffers > 8 to 16 kBytes (sendpage as at 
least 4 syscalls where sendmsg uses only two).

As our current akcipher API does not reach the mentioned limit, I opted to 
require one sendpage call.

But if we change the akcipher API to SGLs, I will lift that limit.

Thanks


-- 
Ciao
Stephan
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux