From patchwork Wed Jun 14 21:15:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 775985 X-Patchwork-Delegate: boris.brezillon@free-electrons.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wnzzR3Lp9z9s7g for ; Thu, 15 Jun 2017 07:19:31 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="gJTZDHE3"; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=aVj7MOhjqK56jvpWeelHCrv302QuyDX0FfzgvaPDECU=; b=gJTZDHE3/WBI65zbWvrTaAsCFf u94vk4+0l5GWfnw4EDc2pqZQI6L6Ndu/aMURzcuU3n73rqGCeiB9ryIDTuRMXPSzHtCz/pnMy9DGg 5eHZDw+0XNifn0xO4U25jMr4UEeWhbk5miQPf2ikbW2fQE1WPJhOCc2TcR3HARW5GsOqk4YIuPN/R P7HC5s+WglApPrQyPMxUyDYaWP01Z/iZBZ7fAE4BOyZtf0TPW61cVd0vKdEOkZ2axqef4zIj4Q0KS Cf2VrvZvZlORXPom6TEePxPA/gtmzQGfZimlS2ETz7WcdgktsVw3KTy0KQdAkzywaSOIUwHNvenWQ KGeXs9oA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dLFhC-0005kk-CA; Wed, 14 Jun 2017 21:19:22 +0000 Received: from mout.kundenserver.de ([212.227.126.131]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dLFh8-0005jy-Eh for linux-mtd@lists.infradead.org; Wed, 14 Jun 2017 21:19:20 +0000 Received: from wuerfel.lan ([78.42.17.5]) by mrelayeu.kundenserver.de (mreue001 [212.227.15.129]) with ESMTPA (Nemesis) id 0LZZE4-1e6NCW2ZXo-00lV1U; Wed, 14 Jun 2017 23:18:48 +0200 From: Arnd Bergmann To: Andrew Morton Subject: [PATCH v2 05/11] mtd: cfi: reduce stack size with KASAN Date: Wed, 14 Jun 2017 23:15:40 +0200 Message-Id: <20170614211556.2062728-6-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170614211556.2062728-1-arnd@arndb.de> References: <20170614211556.2062728-1-arnd@arndb.de> X-Provags-ID: V03:K0:jQtFtujOI91qHhjEQPhH7H4zwUM43AuU25lzsFzC5NvM61fke2d fPM9tJCtpFA7Bh/iNb+ZSdJILB5TsRmwo1kKna86flb+6473UgXJeJ/oQwpTgH3UWAToPIw T3tRuRY9Kfh38avCVBnN299oN7dJB/Y/XISLrR8HozKARgq4+QC9we+khnWNRwV3ECJ7xS6 0LUPt2NXQcHa/KScVOrFw== X-UI-Out-Filterresults: notjunk:1; V01:K0:NB66CqhOCl4=:fUCO0YsQ2DWGJIRmPe67M2 qHm9cFD0cUyhsuDVCird0XQpxv9nLw9jm6RMjYThXk1a596s/dtipqute8R0uI+zlbknTjzmN fZipwuJmbd5i9yx2XxQGXYoNGf4FwbyyKR4eAukLVmdz/O2az5qrovasMixOpPSgfiAThgqkt nU1trOZulUh+YLx5CJWBxrIyH5NAcU9hFQB30E8IrjNPLBLfrLECVa9m8Mf1MxjAaqb1qAsKS k3cqQgZ9axvpu7qWOBedjMCrrCdZ0hONX1GaR4LG/+yZ1Z9Tu8v7znjlCyZxuTKDLG85fXpyo VaQrN2TIhRfePrKXUdtIQjh0hCtFDgPvCOe4JsYK+swisLd77te8wzFPov+sgurtHIJOUYqrH F5Z5YBpUE+ISVAgVIsbNTnNXZwnAsurP0c+m8Qhy26aTaOlQAKGgG6oUewhIy0jcuS7gLeUJB wVDZrfIvajTh0tGEuc44VC1y2PdBO1xhDYEpK7yWz2U7N49rsCF2fSTvarxKQkx9wPZZ0LhGh e8rhX0LVZ5xJ9v6Wy0bwb8w/2jYhQIc9TJkEt7LwqJhD4W706mE+D0PNjGujoBL/ZoAX5Ze01 qDH1FziiGZILJYmD6cQy6C3ia6U65Mut0QcNHKHhSk3L8t/cMHmfmDaKrcZzPJ0AxvfcML3x3 954tZFPV3pHarO4VzcZ1Kt1vO0K9eXiJ7Lf3F86BE8LRvNNW8hawL167ZM0OHw0i6VLs= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170614_141918_871784_24FB8B50 X-CRM114-Status: GOOD ( 12.21 ) X-Spam-Score: -2.9 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [212.227.126.131 listed in list.dnswl.org] -1.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.126.131 listed in wl.mailspike.net] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Boris Brezillon , Arend van Spriel , Arnd Bergmann , netdev@vger.kernel.org, Cyrille Pitchen , linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, Marek Vasut , Alexander Potapenko , linux-mtd@lists.infradead.org, Richard Weinberger , Andrey Ryabinin , Brian Norris , David Woodhouse , Dmitry Vyukov MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org When CONFIG_KASAN is used, we consume a lot of extra stack space: drivers/mtd/chips/cfi_cmdset_0020.c: In function 'do_write_buffer': drivers/mtd/chips/cfi_cmdset_0020.c:603:1: error: the frame size of 2184 bytes is larger than 1536 bytes [-Werror=frame-larger-than=] drivers/mtd/chips/cfi_cmdset_0020.c: In function 'cfi_staa_erase_varsize': drivers/mtd/chips/cfi_cmdset_0020.c:972:1: error: the frame size of 1936 bytes is larger than 1536 bytes [-Werror=frame-larger-than=] drivers/mtd/chips/cfi_cmdset_0001.c: In function 'do_write_buffer': drivers/mtd/chips/cfi_cmdset_0001.c:1841:1: error: the frame size of 1776 bytes is larger than 1536 bytes [-Werror=frame-larger-than=] This marks some functions as noinline_if_stackbloat to keep reduce the overall stack size. Signed-off-by: Arnd Bergmann Acked-by: Boris Brezillon --- drivers/mtd/chips/cfi_cmdset_0020.c | 8 ++++---- include/linux/mtd/map.h | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c index 7d342965f392..5eee5e883f55 100644 --- a/drivers/mtd/chips/cfi_cmdset_0020.c +++ b/drivers/mtd/chips/cfi_cmdset_0020.c @@ -244,7 +244,7 @@ static struct mtd_info *cfi_staa_setup(struct map_info *map) } -static inline int do_read_onechip(struct map_info *map, struct flchip *chip, loff_t adr, size_t len, u_char *buf) +static noinline_if_stackbloat int do_read_onechip(struct map_info *map, struct flchip *chip, loff_t adr, size_t len, u_char *buf) { map_word status, status_OK; unsigned long timeo; @@ -728,7 +728,7 @@ cfi_staa_writev(struct mtd_info *mtd, const struct kvec *vecs, } -static inline int do_erase_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr) +static noinline_if_stackbloat int do_erase_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr) { struct cfi_private *cfi = map->fldrv_priv; map_word status, status_OK; @@ -1029,7 +1029,7 @@ static void cfi_staa_sync (struct mtd_info *mtd) } } -static inline int do_lock_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr) +static noinline_if_stackbloat int do_lock_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr) { struct cfi_private *cfi = map->fldrv_priv; map_word status, status_OK; @@ -1175,7 +1175,7 @@ static int cfi_staa_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len) } return 0; } -static inline int do_unlock_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr) +static noinline_if_stackbloat int do_unlock_oneblock(struct map_info *map, struct flchip *chip, unsigned long adr) { struct cfi_private *cfi = map->fldrv_priv; map_word status, status_OK; diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h index 3aa56e3104bb..29db74314db8 100644 --- a/include/linux/mtd/map.h +++ b/include/linux/mtd/map.h @@ -316,7 +316,7 @@ static inline map_word map_word_or(struct map_info *map, map_word val1, map_word return r; } -static inline int map_word_andequal(struct map_info *map, map_word val1, map_word val2, map_word val3) +static noinline_if_stackbloat int map_word_andequal(struct map_info *map, map_word val1, map_word val2, map_word val3) { int i; @@ -328,7 +328,7 @@ static inline int map_word_andequal(struct map_info *map, map_word val1, map_wor return 1; } -static inline int map_word_bitsset(struct map_info *map, map_word val1, map_word val2) +static noinline_if_stackbloat int map_word_bitsset(struct map_info *map, map_word val1, map_word val2) { int i; @@ -362,7 +362,7 @@ static inline map_word map_word_load(struct map_info *map, const void *ptr) return r; } -static inline map_word map_word_load_partial(struct map_info *map, map_word orig, const unsigned char *buf, int start, int len) +static noinline_if_stackbloat map_word map_word_load_partial(struct map_info *map, map_word orig, const unsigned char *buf, int start, int len) { int i; @@ -392,7 +392,7 @@ static inline map_word map_word_load_partial(struct map_info *map, map_word orig #define MAP_FF_LIMIT 8 #endif -static inline map_word map_word_ff(struct map_info *map) +static noinline_if_stackbloat map_word map_word_ff(struct map_info *map) { map_word r; int i;