From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752021AbdBJIEX (ORCPT ); Fri, 10 Feb 2017 03:04:23 -0500 Received: from mout.kundenserver.de ([217.72.192.73]:50956 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751852AbdBJIEW (ORCPT ); Fri, 10 Feb 2017 03:04:22 -0500 From: Arnd Bergmann To: Scott Bauer Cc: linux-nvme@lists.infradead.org, David.Laight@aculab.com, axboe@fb.com, keith.busch@intel.com, jonathan.derrick@intel.com, hch@infradead.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Subject: Re: [PATCH V3 2/2] Move stack parameters for sed_ioctl to prevent oversized stack with CONFIG_KASAN Date: Fri, 10 Feb 2017 09:01:23 +0100 Message-ID: <4455227.qpXP0b5apU@wuerfel> User-Agent: KMail/5.1.3 (Linux/4.8.0-34-generic; KDE/5.18.0; x86_64; ; ) In-Reply-To: <1486660801-5105-3-git-send-email-scott.bauer@intel.com> References: <1486660801-5105-1-git-send-email-scott.bauer@intel.com> <1486660801-5105-3-git-send-email-scott.bauer@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:TIYILWCJL0Aqcq/AbdWCrJwAjvjVw3UOoDaGLYDiaCf7YiGrrch PFaOyt58xHJ4hp/fWMOpSCGSOG0E7YlyxzQ0fLGRAC1VqAqJ6LmpgZvUVD6DOZbE0d0MF+V bbfR3eCCT8V3DfLQvJcoBR5cIzvB9ncmJpPA3VeaCNpSRzTmLYmAB0lU5XU4zm/5deMJDmg jcgNBc5Snkt72FaLcgosg== X-UI-Out-Filterresults: notjunk:1;V01:K0:MoMzcxg73lY=:RRiL4z2N/4DaR3PVO+y3IV 2oqfr8/EFJ3KHrx8LuSqZQoCFGPIJB63wnTNO2VzIqt2PtT1xi2csI1MWlyo3YT3YGa7IUs8A Ao5mcFLf/awerKqH72D2bXYt1cLUGIaDxhNOM8JfV96e5PL+mwF+ifjRMIwYbTEhhH6oIB0OE kPFhHhiyiJ87vZzP/9jdd/j4A1cXgy6Xz/wmWjlFqMJgEzVA9NQG4KbTXBRd15I8Mgg/9vcfa HoXb8Ugn0Sl0EZvbTws4yqgcmzKGlnQThHpCOZqsmrrL66Fqkn/1bAVMyqTDzcJZp7NXTSn6Z 3fawJzhW0V6sIiOD1dHg1TAJHqFkAKBuQTLVMVGUf7LpeL1NVNO2SoYPDjURA/+5k5/Q6p8Ae CV4oRtJ8pBlTiOJ4XKd773ZrOQKXru/yW1TvfgZY++dBjgb5blVJ6rYpNBx/D076g7Zfxo8hR AiQOfdIAMuhjvuoe8v401thZusJ3xYu12YhSdjAXts5foInd8sQDoEVC8U33oSDSNCOVlhNJd cM4GWCE4tqZ4ZhibAjG3krfJWBxVMQO68e/Iv1QIY2o+cw3FhScqoYh6yU58Tr+MZPBvFccea Z7/PQ+KvCeqItYzyfOIPfALOYAAtZOb7MvdPfz9Bk3ZLf5qEWjw31O8R9/4QyPYdeiVYiV4/f 1XhKmVDN83H+YpJm1m/Gc44Qh7vaz1JygW/0mYs0tHQ3nv7wPnlJa+YZqHiyGo6ZKgsBatiw1 xvkDXN9+KuDosESF Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday, February 9, 2017 10:20:01 AM CET Scott Bauer wrote: > When CONFIG_KASAN is enabled, compilation fails: > > block/sed-opal.c: In function 'sed_ioctl': > block/sed-opal.c:2447:1: error: the frame size of 2256 bytes is larger than 2048 bytes [-Werror=frame-larger-than=] > > Moved all the ioctl structures off the stack and dynamically activate > using _IOC_SIZE() > > Fixes: 455a7b238cd6 ("block: Add Sed-opal library") > > Reported-by: Arnd Bergmann > Signed-off-by: Scott Bauer > --- > block/sed-opal.c | 134 +++++++++++++++++++++---------------------------------- > 1 file changed, 50 insertions(+), 84 deletions(-) > > diff --git a/block/sed-opal.c b/block/sed-opal.c > index bf1406e..4985d95 100644 > --- a/block/sed-opal.c > +++ b/block/sed-opal.c > @@ -2346,7 +2346,10 @@ EXPORT_SYMBOL(opal_unlock_from_suspend); > > int sed_ioctl(struct opal_dev *dev, unsigned int cmd, unsigned long ptr) > { > + void *ioctl_ptr; > + int ret = -ENOTTY; > void __user *arg = (void __user *)ptr; > + unsigned int cmd_size = _IOC_SIZE(cmd); > > if (!capable(CAP_SYS_ADMIN)) > return -EACCES; We usually have a size check in there to avoid allocating large amounts of memory. _IOC_SIZEBITS is 14, so you can have up to 16kb here, which is probably ok, but I'd recommend either adding a comment to say that it is, or just checking against the largest realistic size. Having something like v4l with their tables if ioctl commands and function pointers would also solve it, as you'd be checking for valid command numbers before doing the copy then. Otherwise looks good to me. Arnd