fscrypto: don't use on-stack buffer for key derivation
authorEric Biggers <ebiggers@google.com>
Mon, 14 Nov 2016 01:41:09 +0000 (20:41 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 14 Nov 2016 02:56:25 +0000 (21:56 -0500)
commita6e08912861757b8b335cc49b093a51ec025c5de
treeeae324f8eb4f949bc8b21fa8acc56b6ec0521014
parent08ae877f4e9123ee2a70e8e16cc8c3131ba07dba
fscrypto: don't use on-stack buffer for key derivation

With the new (in 4.9) option to use a virtually-mapped stack
(CONFIG_VMAP_STACK), stack buffers cannot be used as input/output for
the scatterlist crypto API because they may not be directly mappable to
struct page.  get_crypt_info() was using a stack buffer to hold the
output from the encryption operation used to derive the per-file key.
Fix it by using a heap buffer.

This bug could most easily be observed in a CONFIG_DEBUG_SG kernel
because this allowed the BUG in sg_set_buf() to be triggered.

Cc: stable@vger.kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/crypto/keyinfo.c