]> git.baikalelectronics.ru Git - kernel.git/commit
rxrpc: Fix -Wframe-larger-than= warnings from on-stack crypto
authorDavid Howells <dhowells@redhat.com>
Tue, 30 Jul 2019 14:56:57 +0000 (15:56 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 Jul 2019 17:32:35 +0000 (10:32 -0700)
commit70a8ad8b698d17bf6e7454651b2f77b7ff06a856
tree62ebbf283dc01704b5f9fa81475a527bfc038021
parenta31b6e5a5c10083048b357f0e01125adb4da6362
rxrpc: Fix -Wframe-larger-than= warnings from on-stack crypto

rxkad sometimes triggers a warning about oversized stack frames when
building with clang for a 32-bit architecture:

net/rxrpc/rxkad.c:243:12: error: stack frame size of 1088 bytes in function 'rxkad_secure_packet' [-Werror,-Wframe-larger-than=]
net/rxrpc/rxkad.c:501:12: error: stack frame size of 1088 bytes in function 'rxkad_verify_packet' [-Werror,-Wframe-larger-than=]

The problem is the combination of SYNC_SKCIPHER_REQUEST_ON_STACK() in
rxkad_verify_packet()/rxkad_secure_packet() with the relatively large
scatterlist in rxkad_verify_packet_1()/rxkad_secure_packet_encrypt().

The warning does not show up when using gcc, which does not inline the
functions as aggressively, but the problem is still the same.

Allocate the cipher buffers from the slab instead, caching the allocated
packet crypto request memory used for DATA packet crypto in the rxrpc_call
struct.

Fixes: 81566af9fe72 ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
cc: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rxrpc/ar-internal.h
net/rxrpc/call_object.c
net/rxrpc/insecure.c
net/rxrpc/rxkad.c