]> git.baikalelectronics.ru Git - kernel.git/commit
crypto: drbg - prevent invalid SG mappings
authorStephan Mueller <smueller@chronox.de>
Tue, 29 Nov 2016 08:45:04 +0000 (09:45 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 30 Nov 2016 11:46:44 +0000 (19:46 +0800)
commit2d45af3aaf603f5619de481706ed391203c99bf1
tree2f1b0259571af794c5e1004d452b0f81966c646f
parent3e5adccb9b116f1ede18f0a34782553dcad4d633
crypto: drbg - prevent invalid SG mappings

When using SGs, only heap memory (memory that is valid as per
virt_addr_valid) is allowed to be referenced. The CTR DRBG used to
reference the caller-provided memory directly in an SG. In case the
caller provided stack memory pointers, the SG mapping is not considered
to be valid. In some cases, this would even cause a paging fault.

The change adds a new scratch buffer that is used unconditionally to
catch the cases where the caller-provided buffer is not suitable for
use in an SG. The crypto operation of the CTR DRBG produces its output
with that scratch buffer and finally copies the content of the
scratch buffer to the caller's buffer.

The scratch buffer is allocated during allocation time of the CTR DRBG
as its access is protected with the DRBG mutex.

Signed-off-by: Stephan Mueller <smueller@chronox.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/drbg.c
include/crypto/drbg.h