On Sat, Feb 04, 2017 at 11:47:38AM +0800, Yisheng Xie wrote: > On 2016/10/18 1:06, Andy Lutomirski wrote: > > hw_random carefully avoids using a stack buffer except in > > add_early_randomness(). This causes a crash in virtio_rng if > > CONFIG_VMAP_STACK=y. > I try to understand this patch, but I do not know why it will cause > a crash in virtio_rng with CONFIG_VMAP_STACK=y? > Could you please give me more info. about it. My original report was https://lkml.kernel.org/r/20161016002151.GA18235@xxxxxxxxxxxxxxxx. The virtio ring APIs use scatterlists to keep track of the buffers, and scatterlist requires addresses to be in the kernel direct-mapped address range. This is not the case for vmalloc()ed addresses, such as the original on-stack "bytes" array when VMAP_STACK=y.