From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753237AbdLHMnY (ORCPT ); Fri, 8 Dec 2017 07:43:24 -0500 Received: from mail.eperm.de ([89.247.134.16]:42924 "EHLO mail.eperm.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753047AbdLHMnW (ORCPT ); Fri, 8 Dec 2017 07:43:22 -0500 From: Stephan Mueller To: Jonathan Cameron Cc: herbert@gondor.apana.org.au, davem@davemloft.net, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Subject: AF_ALG: skb limits Date: Fri, 08 Dec 2017 13:43:20 +0100 Message-ID: <3071479.2PrSHYvzOR@tauon.chronox.de> In-Reply-To: <20171208113906.000050aa@huawei.com> References: <001a1141f050d78763055f85c42e@google.com> <5543369.6UIL7PonCy@positron.chronox.de> <20171208113906.000050aa@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am Freitag, 8. Dezember 2017, 12:39:06 CET schrieb Jonathan Cameron: Hi Jonathan, > > As a heads up, the other nasties we've found so far are around hitting > limits on the various socket buffers. When you run into those you can end > up with parts of the data to be encrypted going through without it being > obvious. > The entire code uses sock_alloc to prevent user space to chew up kernel memory. I am aware that if you have a too low skb buffer limit, parts of the cipher operation will not succeed as a malloc will fail. But that is returned with an error to user space. If you observe such an error, the entire message you wanted to read with recvmsg must be considered tainted (i.e. you do not know which part of the message has been encrypted or not). Thus, the recvmsg must be invoked again on the same buffer sent to the kernel if you want to ensure you encrypted the data. Could you please help me understand where that functionality fails? PS: If you want to give more memory to your sockets, you have to tweak /proc/ sys/net/core/optmem_max. Ciao Stephan