From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95B0BC282C0 for ; Wed, 23 Jan 2019 14:16:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7031F2184B for ; Wed, 23 Jan 2019 14:16:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727268AbfAWOQN convert rfc822-to-8bit (ORCPT ); Wed, 23 Jan 2019 09:16:13 -0500 Received: from mga02.intel.com ([134.134.136.20]:47729 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727110AbfAWOPz (ORCPT ); Wed, 23 Jan 2019 09:15:55 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Jan 2019 06:15:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,511,1539673200"; d="scan'208";a="140624960" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.172]) by fmsmga001.fm.intel.com with ESMTP; 23 Jan 2019 06:15:47 -0800 From: Jani Nikula To: Greg KH , Kees Cook Cc: dev@openvswitch.org, Ard Biesheuvel , netdev@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-security-module@vger.kernel.org, kernel-hardening@lists.openwall.com, intel-wired-lan@lists.osuosl.org, linux-fsdevel@vger.kernel.org, xen-devel@lists.xenproject.org, Laura Abbott , linux-kbuild@vger.kernel.org, Alexander Popov Subject: Re: [Intel-gfx] [PATCH 1/3] treewide: Lift switch variables out of switches In-Reply-To: <20190123115829.GA31385@kroah.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20190123110349.35882-1-keescook@chromium.org> <20190123110349.35882-2-keescook@chromium.org> <20190123115829.GA31385@kroah.com> Date: Wed, 23 Jan 2019 16:17:30 +0200 Message-ID: <874l9z31c5.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 23 Jan 2019, Greg KH wrote: > On Wed, Jan 23, 2019 at 03:03:47AM -0800, Kees Cook wrote: >> Variables declared in a switch statement before any case statements >> cannot be initialized, so move all instances out of the switches. >> After this, future always-initialized stack variables will work >> and not throw warnings like this: >> >> fs/fcntl.c: In function ‘send_sigio_to_task’: >> fs/fcntl.c:738:13: warning: statement will never be executed [-Wswitch-unreachable] >> siginfo_t si; >> ^~ > > That's a pain, so this means we can't have any new variables in { } > scope except for at the top of a function? > > That's going to be a hard thing to keep from happening over time, as > this is valid C :( Not all valid C is meant to be used! ;) Anyway, I think you're mistaking the limitation to arbitrary blocks while it's only about the switch block IIUC. Can't have: switch (i) { int j; case 0: /* ... */ } because it can't be turned into: switch (i) { int j = 0; /* not valid C */ case 0: /* ... */ } but can have e.g.: switch (i) { case 0: { int j = 0; /* ... */ } } I think Kees' approach of moving such variable declarations to the enclosing block scope is better than adding another nesting block. BR, Jani. -- Jani Nikula, Intel Open Source Graphics Center From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [1/3] treewide: Lift switch variables out of switches From: Jani Nikula Message-Id: <874l9z31c5.fsf@intel.com> Date: Wed, 23 Jan 2019 16:17:30 +0200 To: Greg KH , Kees Cook Cc: dev@openvswitch.org, Ard Biesheuvel , netdev@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-security-module@vger.kernel.org, kernel-hardening@lists.openwall.com, intel-wired-lan@lists.osuosl.org, linux-fsdevel@vger.kernel.org, xen-devel@lists.xenproject.org, Laura Abbott , linux-kbuild@vger.kernel.org, Alexander Popov List-ID: T24gV2VkLCAyMyBKYW4gMjAxOSwgR3JlZyBLSCA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ IHdyb3RlOgo+IE9uIFdlZCwgSmFuIDIzLCAyMDE5IGF0IDAzOjAzOjQ3QU0gLTA4MDAsIEtlZXMg Q29vayB3cm90ZToKPj4gVmFyaWFibGVzIGRlY2xhcmVkIGluIGEgc3dpdGNoIHN0YXRlbWVudCBi ZWZvcmUgYW55IGNhc2Ugc3RhdGVtZW50cwo+PiBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQsIHNvIG1v dmUgYWxsIGluc3RhbmNlcyBvdXQgb2YgdGhlIHN3aXRjaGVzLgo+PiBBZnRlciB0aGlzLCBmdXR1 cmUgYWx3YXlzLWluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlcyB3aWxsIHdvcmsKPj4gYW5kIG5v dCB0aHJvdyB3YXJuaW5ncyBsaWtlIHRoaXM6Cj4+IAo+PiBmcy9mY250bC5jOiBJbiBmdW5jdGlv biDigJhzZW5kX3NpZ2lvX3RvX3Rhc2vigJk6Cj4+IGZzL2ZjbnRsLmM6NzM4OjEzOiB3YXJuaW5n OiBzdGF0ZW1lbnQgd2lsbCBuZXZlciBiZSBleGVjdXRlZCBbLVdzd2l0Y2gtdW5yZWFjaGFibGVd Cj4+ICAgIHNpZ2luZm9fdCBzaTsKPj4gICAgICAgICAgICAgIF5+Cj4KPiBUaGF0J3MgYSBwYWlu LCBzbyB0aGlzIG1lYW5zIHdlIGNhbid0IGhhdmUgYW55IG5ldyB2YXJpYWJsZXMgaW4geyB9Cj4g c2NvcGUgZXhjZXB0IGZvciBhdCB0aGUgdG9wIG9mIGEgZnVuY3Rpb24/Cj4KPiBUaGF0J3MgZ29p bmcgdG8gYmUgYSBoYXJkIHRoaW5nIHRvIGtlZXAgZnJvbSBoYXBwZW5pbmcgb3ZlciB0aW1lLCBh cwo+IHRoaXMgaXMgdmFsaWQgQyA6KAoKTm90IGFsbCB2YWxpZCBDIGlzIG1lYW50IHRvIGJlIHVz ZWQhIDspCgpBbnl3YXksIEkgdGhpbmsgeW91J3JlIG1pc3Rha2luZyB0aGUgbGltaXRhdGlvbiB0 byBhcmJpdHJhcnkgYmxvY2tzCndoaWxlIGl0J3Mgb25seSBhYm91dCB0aGUgc3dpdGNoIGJsb2Nr IElJVUMuCgpDYW4ndCBoYXZlOgoKCXN3aXRjaCAoaSkgewoJCWludCBqOwoJY2FzZSAwOgogICAg ICAgIAkvKiAuLi4gKi8KCX0KCmJlY2F1c2UgaXQgY2FuJ3QgYmUgdHVybmVkIGludG86CgoJc3dp dGNoIChpKSB7CgkJaW50IGogPSAwOyAvKiBub3QgdmFsaWQgQyAqLwoJY2FzZSAwOgogICAgICAg IAkvKiAuLi4gKi8KCX0KCmJ1dCBjYW4gaGF2ZSBlLmcuOgoKCXN3aXRjaCAoaSkgewoJY2FzZSAw OgoJCXsKCQkJaW50IGogPSAwOwoJICAgICAgICAJLyogLi4uICovCgkJfQoJfQoKSSB0aGluayBL ZWVzJyBhcHByb2FjaCBvZiBtb3Zpbmcgc3VjaCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gdGhl CmVuY2xvc2luZyBibG9jayBzY29wZSBpcyBiZXR0ZXIgdGhhbiBhZGRpbmcgYW5vdGhlciBuZXN0 aW5nIGJsb2NrLgoKQlIsCkphbmkuCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [Intel-gfx] [PATCH 1/3] treewide: Lift switch variables out of switches Date: Wed, 23 Jan 2019 16:17:30 +0200 Message-ID: <874l9z31c5.fsf@intel.com> References: <20190123110349.35882-1-keescook@chromium.org> <20190123110349.35882-2-keescook@chromium.org> <20190123115829.GA31385@kroah.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190123115829.GA31385@kroah.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Greg KH , Kees Cook Cc: dev@openvswitch.org, Ard Biesheuvel , netdev@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mm@kvack.org, linux-security-module@vger.kernel.org, intel-wired-lan@lists.osuosl.org, xen-devel@lists.xenproject.org, kernel-hardening@lists.openwall.com, linux-fsdevel@vger.kernel.org, linux-kbuild@vger.kernel.org, Alexander Popov List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAyMyBKYW4gMjAxOSwgR3JlZyBLSCA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ IHdyb3RlOgo+IE9uIFdlZCwgSmFuIDIzLCAyMDE5IGF0IDAzOjAzOjQ3QU0gLTA4MDAsIEtlZXMg Q29vayB3cm90ZToKPj4gVmFyaWFibGVzIGRlY2xhcmVkIGluIGEgc3dpdGNoIHN0YXRlbWVudCBi ZWZvcmUgYW55IGNhc2Ugc3RhdGVtZW50cwo+PiBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQsIHNvIG1v dmUgYWxsIGluc3RhbmNlcyBvdXQgb2YgdGhlIHN3aXRjaGVzLgo+PiBBZnRlciB0aGlzLCBmdXR1 cmUgYWx3YXlzLWluaXRpYWxpemVkIHN0YWNrIHZhcmlhYmxlcyB3aWxsIHdvcmsKPj4gYW5kIG5v dCB0aHJvdyB3YXJuaW5ncyBsaWtlIHRoaXM6Cj4+IAo+PiBmcy9mY250bC5jOiBJbiBmdW5jdGlv biDigJhzZW5kX3NpZ2lvX3RvX3Rhc2vigJk6Cj4+IGZzL2ZjbnRsLmM6NzM4OjEzOiB3YXJuaW5n OiBzdGF0ZW1lbnQgd2lsbCBuZXZlciBiZSBleGVjdXRlZCBbLVdzd2l0Y2gtdW5yZWFjaGFibGVd Cj4+ICAgIHNpZ2luZm9fdCBzaTsKPj4gICAgICAgICAgICAgIF5+Cj4KPiBUaGF0J3MgYSBwYWlu LCBzbyB0aGlzIG1lYW5zIHdlIGNhbid0IGhhdmUgYW55IG5ldyB2YXJpYWJsZXMgaW4geyB9Cj4g c2NvcGUgZXhjZXB0IGZvciBhdCB0aGUgdG9wIG9mIGEgZnVuY3Rpb24/Cj4KPiBUaGF0J3MgZ29p bmcgdG8gYmUgYSBoYXJkIHRoaW5nIHRvIGtlZXAgZnJvbSBoYXBwZW5pbmcgb3ZlciB0aW1lLCBh cwo+IHRoaXMgaXMgdmFsaWQgQyA6KAoKTm90IGFsbCB2YWxpZCBDIGlzIG1lYW50IHRvIGJlIHVz ZWQhIDspCgpBbnl3YXksIEkgdGhpbmsgeW91J3JlIG1pc3Rha2luZyB0aGUgbGltaXRhdGlvbiB0 byBhcmJpdHJhcnkgYmxvY2tzCndoaWxlIGl0J3Mgb25seSBhYm91dCB0aGUgc3dpdGNoIGJsb2Nr IElJVUMuCgpDYW4ndCBoYXZlOgoKCXN3aXRjaCAoaSkgewoJCWludCBqOwoJY2FzZSAwOgogICAg ICAgIAkvKiAuLi4gKi8KCX0KCmJlY2F1c2UgaXQgY2FuJ3QgYmUgdHVybmVkIGludG86CgoJc3dp dGNoIChpKSB7CgkJaW50IGogPSAwOyAvKiBub3QgdmFsaWQgQyAqLwoJY2FzZSAwOgogICAgICAg IAkvKiAuLi4gKi8KCX0KCmJ1dCBjYW4gaGF2ZSBlLmcuOgoKCXN3aXRjaCAoaSkgewoJY2FzZSAw OgoJCXsKCQkJaW50IGogPSAwOwoJICAgICAgICAJLyogLi4uICovCgkJfQoJfQoKSSB0aGluayBL ZWVzJyBhcHByb2FjaCBvZiBtb3Zpbmcgc3VjaCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gdGhl CmVuY2xvc2luZyBibG9jayBzY29wZSBpcyBiZXR0ZXIgdGhhbiBhZGRpbmcgYW5vdGhlciBuZXN0 aW5nIGJsb2NrLgoKQlIsCkphbmkuCgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJj ZSBHcmFwaGljcyBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Date: Wed, 23 Jan 2019 16:17:30 +0200 Subject: [Intel-wired-lan] [Intel-gfx] [PATCH 1/3] treewide: Lift switch variables out of switches In-Reply-To: <20190123115829.GA31385@kroah.com> References: <20190123110349.35882-1-keescook@chromium.org> <20190123110349.35882-2-keescook@chromium.org> <20190123115829.GA31385@kroah.com> Message-ID: <874l9z31c5.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: On Wed, 23 Jan 2019, Greg KH wrote: > On Wed, Jan 23, 2019 at 03:03:47AM -0800, Kees Cook wrote: >> Variables declared in a switch statement before any case statements >> cannot be initialized, so move all instances out of the switches. >> After this, future always-initialized stack variables will work >> and not throw warnings like this: >> >> fs/fcntl.c: In function ?send_sigio_to_task?: >> fs/fcntl.c:738:13: warning: statement will never be executed [-Wswitch-unreachable] >> siginfo_t si; >> ^~ > > That's a pain, so this means we can't have any new variables in { } > scope except for at the top of a function? > > That's going to be a hard thing to keep from happening over time, as > this is valid C :( Not all valid C is meant to be used! ;) Anyway, I think you're mistaking the limitation to arbitrary blocks while it's only about the switch block IIUC. Can't have: switch (i) { int j; case 0: /* ... */ } because it can't be turned into: switch (i) { int j = 0; /* not valid C */ case 0: /* ... */ } but can have e.g.: switch (i) { case 0: { int j = 0; /* ... */ } } I think Kees' approach of moving such variable declarations to the enclosing block scope is better than adding another nesting block. BR, Jani. -- Jani Nikula, Intel Open Source Graphics Center