From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753704AbdBDEnA (ORCPT ); Fri, 3 Feb 2017 23:43:00 -0500 Received: from hydra.tuxags.com ([64.13.172.54]:47593 "EHLO mail.tuxags.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753539AbdBDEm7 (ORCPT ); Fri, 3 Feb 2017 23:42:59 -0500 X-Greylist: delayed 518 seconds by postgrey-1.27 at vger.kernel.org; Fri, 03 Feb 2017 23:42:59 EST Date: Fri, 3 Feb 2017 20:34:16 -0800 From: Matt Mullins To: Yisheng Xie Cc: Andy Lutomirski , linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Matt Mackall , Herbert Xu , Rusty Russell , Jens Axboe , Matt Mullins , Xishi Qiu , Hanjun Guo Subject: Re: [PATCH resend 4.9] hw_random: Don't use a stack buffer in add_early_randomness() Message-ID: <20170204043416.GA7458@hydra.tuxags.com> Mail-Followup-To: Yisheng Xie , Andy Lutomirski , linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, Matt Mackall , Herbert Xu , Rusty Russell , Jens Axboe , Matt Mullins , Xishi Qiu , Hanjun Guo References: <4169224b6858d1cf149f1a73f8a03603fa19076d.1476638125.git.luto@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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@hydra.tuxags.com. 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.