On Thu, Nov 03, 2016 at 03:03:01PM -0700, Eric Biggers wrote: > 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. For short filenames, fname_encrypt() was encrypting a > stack buffer holding the padded filename. Fix it by encrypting the > filename in-place in the output buffer, thereby making the temporary > buffer unnecessary. > > 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. > > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> > - alloc_buf = kmalloc(ciphertext_len, GFP_NOFS); > - if (!alloc_buf) > - return -ENOMEM; > - workbuf = alloc_buf; Vmalloc memory does have struct pages - you just need to use vmalloc_to_page() instead of virt_to_page. Look at drivers/md/bcache/util.c bch_bio_map() if you want an example. It would be better to just fix the sg code to handle vmalloc memory, instead of adding a kmalloc() that can fail (and an error path that inevitably won't be tested). -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html