From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vineet Gupta Subject: Re: [PATCH] bug.h: Work around GCC PR82365 in BUG() Date: Wed, 21 Feb 2018 13:23:52 -0800 Message-ID: <2d57e8c6-069c-c4b7-0eb2-6abb8fa2181f@synopsys.com> References: <20171219114112.939391-1-arnd@arndb.de> <8e42a1de-f619-7a4e-6d58-f90f53f5f38f@synopsys.com> <27bfdc23-1774-cf07-dab4-ab253a41d2f7@synopsys.com> <861992dd-a28d-0f8c-572f-4194d15238df@synopsys.com> <20180207160138.0705eeca67d8cc4d6309381c@linux-foundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+gla-linux-snps-arc=m.gmane.org@lists.infradead.org To: Andrew Morton Cc: "linux-arch@vger.kernel.org" , Fenghua Yu , Jesper Nilsson , Tony Luck , Kees Cook , Arnd Bergmann , "linux-kbuild@vger.kernel.org" , Peter Zijlstra , Christopher Li , Mark Rutland , Will Deacon , "Steven Rostedt (VMware)" , Ingo Molnar , Mikael Starvik , Geert Uytterhoeven , Josh Poimboeuf , Thomas Gleixner , arcml , "David S. Miller" List-Id: linux-arch.vger.kernel.org T24gMDIvMDcvMjAxOCAwNToyMCBQTSwgVmluZWV0IEd1cHRhIHdyb3RlOgo+Cj4+IERpZG4ndCBk byA7KQo+Pgo+PiBJcyBBcm5kJ3MgcGF0Y2ggZ29vZCB0byBtZXJnZSBvciBkbyB3ZSBuZWVkIGEg Zml4dXA/Cj4+Cj4+Cj4+IEZyb206IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+Cj4+IFN1 YmplY3Q6IGJ1Zy5oOiB3b3JrIGFyb3VuZCBHQ0MgUFI4MjM2NSBpbiBCVUcoKQo+Pgo+PiBMb29r aW5nIGF0IGZ1bmN0aW9ucyB3aXRoIGxhcmdlIHN0YWNrIGZyYW1lcyBhY3Jvc3MgYWxsIGFyY2hp dGVjdHVyZXMgbGVkCj4+IG1lIGRpc2NvdmVyaW5nIHRoYXQgQlVHKCkgc3VmZmVycyBmcm9tIHRo ZSBzYW1lIHByb2JsZW0gYXMKPj4gZm9ydGlmeV9wYW5pYygpLCB3aGljaCBJJ3ZlIGFkZGVkIGEg d29ya2Fyb3VuZCBmb3IgYWxyZWFkeS7CoCBJbiBzaG9ydCwKPj4gdmFyaWFibGVzIHRoYXQgZ28g b3V0IG9mIHNjb3BlIGJ5IGNhbGxpbmcgYSBub3JldHVybiBmdW5jdGlvbiBvcgo+PiBfX2J1aWx0 aW5fdW5yZWFjaGFibGUoKSBrZWVwIHVzaW5nIHN0YWNrIHNwYWNlIGluIGZ1bmN0aW9ucyBhZnRl cndhcmRzLgo+Pgo+PiBBIHdvcmthcm91bmQgdGhhdCB3YXMgaWRlbnRpZmllZCBpcyB0byBpbnNl cnQgYW4gZW1wdHkgYXNzZW1ibGVyIHN0YXRlbWVudAo+PiBqdXN0IGJlZm9yZSBjYWxsaW5nIHRo ZSBmdW5jdGlvbiB0aGF0IGRvZXNuJ3QgcmV0dXJuLsKgIEknbSBhZGRpbmcgYSBtYWNybwo+PiAi YmFycmllcl9iZWZvcmVfdW5yZWFjaGFibGUoKSIgdG8gZG9jdW1lbnQgdGhpcywgYW5kIGluc2Vy dCBjYWxscyB0byB0aGF0Cj4+IGluIGFsbCBpbnN0YW5jZXMgb2YgQlVHKCkgdGhhdCBjdXJyZW50 bHkgc3VmZmVyIGZyb20gdGhpcyBwcm9ibGVtLgo+PgouLgouLgoKPj4gLS0tCj4+Cj4+IMKgIGFy Y2gvYXJjL2luY2x1ZGUvYXNtL2J1Zy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgIDMg KystCj4+IMKgIGFyY2gvY3Jpcy9pbmNsdWRlL2FyY2gtdjEwL2FyY2gvYnVnLmggfMKgwqAgMTEg KysrKysrKysrLS0KPj4gwqAgYXJjaC9pYTY0L2luY2x1ZGUvYXNtL2J1Zy5owqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoCA2ICsrKysrLQo+PiDCoCBhcmNoL202OGsvaW5jbHVkZS9hc20vYnVn LmjCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgIDMgKysrCj4+IMKgIGFyY2gvc3BhcmMvaW5j bHVkZS9hc20vYnVnLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoCA2ICsrKysrLQo+PiDCoCBp bmNsdWRlL2FzbS1nZW5lcmljL2J1Zy5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAg MSArCj4+IMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXItZ2NjLmjCoMKgwqDCoMKgwqDCoMKgwqAg fMKgwqAgMTUgKysrKysrKysrKysrKystCj4+IMKgIGluY2x1ZGUvbGludXgvY29tcGlsZXIuaMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqAgNSArKysrKwo+PiDCoCA4IGZpbGVzIGNo YW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLXB1TiBh cmNoL2FyYy9pbmNsdWRlL2FzbS9idWcuaH5idWdoLXdvcmstYXJvdW5kLWdjYy1wcjgyMzY1LWlu LWJ1ZyAKPj4gYXJjaC9hcmMvaW5jbHVkZS9hc20vYnVnLmgKPj4gLS0tIGEvYXJjaC9hcmMvaW5j bHVkZS9hc20vYnVnLmh+YnVnaC13b3JrLWFyb3VuZC1nY2MtcHI4MjM2NS1pbi1idWcKPj4gKysr IGEvYXJjaC9hcmMvaW5jbHVkZS9hc20vYnVnLmgKPj4gQEAgLTIzLDcgKzIzLDggQEAgdm9pZCBk aWUoY29uc3QgY2hhciAqc3RyLCBzdHJ1Y3QgcHRfcmVncwo+PiDCoCDCoCAjZGVmaW5lIEJVRygp wqDCoMKgIGRvIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4+IMKgwqDCoMKgwqAgcHJfd2FybigiQlVHOiBmYWlsdXJlIGF0 ICVzOiVkLyVzKCkhXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fZnVuY19fKTsgXAo+PiAtwqDC oMKgIGR1bXBfc3RhY2soKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqAgYmFycmllcl9iZWZvcmVfdW5yZWFj aGFibGUoKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK Pj4gK8KgwqDCoCBfX2J1aWx0aW5fdHJhcCgpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+IMKgIH0gd2hpbGUgKDApCj4KPiBGb3IgQVJD LCBpdCBpcyBkb3VibGUgd2luLgo+Cj4gMS4gRml4ZXMgMyAtV3JldHVybi10eXBlIHdhcm5pbmdz Cj4KPiB8IC4uL25ldC9jb3JlL2V0aHRvb2wuYzozMTE6MTogd2FybmluZzogY29udHJvbCByZWFj aGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbiAKPiBbLVdyZXR1cm4tdHlwZV0KPiB8IC4uL2tl cm5lbC9zY2hlZC9jb3JlLmM6MzI0NjoxOiB3YXJuaW5nOiBjb250cm9sIHJlYWNoZXMgZW5kIG9m IG5vbi12b2lkIAo+IGZ1bmN0aW9uIFstV3JldHVybi10eXBlXQo+IHwgLi4vaW5jbHVkZS9saW51 eC9zdW5ycGMvc3ZjX3hwcnQuaDoxODA6MTogd2FybmluZzogY29udHJvbCByZWFjaGVzIGVuZCBv ZiAKPiBub24tdm9pZCBmdW5jdGlvbiBbLVdyZXR1cm4tdHlwZV0KPgo+IDIuIGJsb2F0LW8tbWV0 ZXIgcmVwb3J0cyBjb2RlIHNpemUgaW1wcm92ZW1lbnRzIGFzIGdjYyBlbGlkZXMgdGhlIGdlbmVy YXRlZCBjb2RlIAo+IGZvciBzdGFjayByZXR1cm4uCj4KPgo+IEFja2VkLWJ5OiBWaW5lZXQgR3Vw dGEgPHZndXB0YUBzeW5vcHN5cy5jb20+wqDCoCAjIGZvciBhcmNoL2FyYwo+IFRlc3RlZC1ieTog VmluZWV0IEd1cHRhIDx2Z3VwdGFAc3lub3BzeXMuY29tPsKgwqAgIyBmb3IgYXJjaC9hcmMKClBp bmcgPwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LXNucHMtYXJjIG1haWxpbmcgbGlzdApsaW51eC1zbnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtc25w cy1hcmM= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtprelay.synopsys.com ([198.182.47.9]:53808 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751399AbeBUVYI (ORCPT ); Wed, 21 Feb 2018 16:24:08 -0500 Subject: Re: [PATCH] bug.h: Work around GCC PR82365 in BUG() References: <20171219114112.939391-1-arnd@arndb.de> <8e42a1de-f619-7a4e-6d58-f90f53f5f38f@synopsys.com> <27bfdc23-1774-cf07-dab4-ab253a41d2f7@synopsys.com> <861992dd-a28d-0f8c-572f-4194d15238df@synopsys.com> <20180207160138.0705eeca67d8cc4d6309381c@linux-foundation.org> From: Vineet Gupta Message-ID: <2d57e8c6-069c-c4b7-0eb2-6abb8fa2181f@synopsys.com> Date: Wed, 21 Feb 2018 13:23:52 -0800 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: linux-arch-owner@vger.kernel.org List-ID: To: Andrew Morton Cc: Arnd Bergmann , "linux-arch@vger.kernel.org" , "linux-kbuild@vger.kernel.org" , Mikael Starvik , Jesper Nilsson , Tony Luck , Fenghua Yu , Geert Uytterhoeven , "David S. Miller" , Christopher Li , Thomas Gleixner , Peter Zijlstra , Kees Cook , Ingo Molnar , Josh Poimboeuf , Will Deacon , "Steven Rostedt (VMware)" , Mark Rutland , arcml Message-ID: <20180221212352.rvL6xGy8MvDzPTwNHuJFJzF3fdu2KtqG23hH42YZ8QM@z> On 02/07/2018 05:20 PM, Vineet Gupta wrote: > >> Didn't do ;) >> >> Is Arnd's patch good to merge or do we need a fixup? >> >> >> From: Arnd Bergmann >> Subject: bug.h: work around GCC PR82365 in BUG() >> >> Looking at functions with large stack frames across all architectures led >> me discovering that BUG() suffers from the same problem as >> fortify_panic(), which I've added a workaround for already.  In short, >> variables that go out of scope by calling a noreturn function or >> __builtin_unreachable() keep using stack space in functions afterwards. >> >> A workaround that was identified is to insert an empty assembler statement >> just before calling the function that doesn't return.  I'm adding a macro >> "barrier_before_unreachable()" to document this, and insert calls to that >> in all instances of BUG() that currently suffer from this problem. >> .. .. >> --- >> >>   arch/arc/include/asm/bug.h            |    3 ++- >>   arch/cris/include/arch-v10/arch/bug.h |   11 +++++++++-- >>   arch/ia64/include/asm/bug.h           |    6 +++++- >>   arch/m68k/include/asm/bug.h           |    3 +++ >>   arch/sparc/include/asm/bug.h          |    6 +++++- >>   include/asm-generic/bug.h             |    1 + >>   include/linux/compiler-gcc.h          |   15 ++++++++++++++- >>   include/linux/compiler.h              |    5 +++++ >>   8 files changed, 44 insertions(+), 6 deletions(-) >> >> diff -puN arch/arc/include/asm/bug.h~bugh-work-around-gcc-pr82365-in-bug >> arch/arc/include/asm/bug.h >> --- a/arch/arc/include/asm/bug.h~bugh-work-around-gcc-pr82365-in-bug >> +++ a/arch/arc/include/asm/bug.h >> @@ -23,7 +23,8 @@ void die(const char *str, struct pt_regs >>     #define BUG()    do {                                \ >>       pr_warn("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \ >> -    dump_stack();                                \ >> +    barrier_before_unreachable();                        \ >> +    __builtin_trap();                            \ >>   } while (0) > > For ARC, it is double win. > > 1. Fixes 3 -Wreturn-type warnings > > | ../net/core/ethtool.c:311:1: warning: control reaches end of non-void function > [-Wreturn-type] > | ../kernel/sched/core.c:3246:1: warning: control reaches end of non-void > function [-Wreturn-type] > | ../include/linux/sunrpc/svc_xprt.h:180:1: warning: control reaches end of > non-void function [-Wreturn-type] > > 2. bloat-o-meter reports code size improvements as gcc elides the generated code > for stack return. > > > Acked-by: Vineet Gupta    # for arch/arc > Tested-by: Vineet Gupta    # for arch/arc Ping ?