From: Kees Cook <keescook@chromium.org> To: James Bottomley <James.Bottomley@HansenPartnership.com> Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>, Joe Perches <joe@perches.com>, Jakub Kicinski <kuba@kernel.org>, alsa-devel@alsa-project.org, linux-atm-general@lists.sourceforge.net, reiserfs-devel@vger.kernel.org, linux-iio@vger.kernel.org, linux-wireless@vger.kernel.org, linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Nathan Chancellor <natechancellor@gmail.com>, linux-ide@vger.kernel.org, dm-devel@redhat.com, keyrings@vger.kernel.org, linux-mtd@lists.infradead.org, GR-everest-linux-l2@marvell.com, wcn36xx@lists.infradead.org, samba-technical@lists.samba.org, linux-i3c@lists.infradead.org, linux1394-devel@lists.sourceforge.net, linux-afs@lists.infradead.org, usb-storage@lists.one-eyed-alien.net, drbd-dev@lists.linbit.com, devel@driverdev.osuosl.org, linux-cifs@vger.kernel.org, rds-devel@oss.oracle.com, Nick Desaulniers <ndesaulniers@google.com>, linux-scsi@vger.kernel.org, linux-rdma@vger.kernel.org, oss-drivers@netronome.com, bridge@lists.linux-foundation.org, linux-security-module@vger.kernel.org, amd-gfx@lists.freedesktop.org, linux-stm32@st-md-mailman.stormreply.com, cluster-devel@redhat.com, linux-acpi@vger.kernel.org, coreteam@netfilter.org, intel-wired-lan@lists.osuosl.org, linux-input@vger.kernel.org, Miguel Ojeda <ojeda@kernel.org>, tipc-discussion@lists.sourceforge.net, linux-ext4@vger.kernel.org, linux-media@vger.kernel.org, linux-watchdog@vger.kernel.org, selinux@vger.kernel.org, linux-arm-msm@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-geode@lists.infradead.org, linux-can@vger.kernel.org, linux-block@vger.kernel.org, linux-gpio@vger.kernel.org, op-tee@lists.trustedfirmware.org, linux-mediatek@lists.infradead.org, xen-devel@lists.xenproject.org, nouveau@lists.freedesktop.org, linux-hams@vger.kernel.org, ceph-devel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-hwmon@vger.kernel.org, x86@kernel.org, linux-nfs@vger.kernel.org, GR-Linux-NIC-Dev@marvell.com, linux-mm@kvack.org, netdev@vger.kernel.org, linux-decnet-user@lists.sourceforge.net, linux-mmc@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-sctp@vger.kernel.org, linux-usb@vger.kernel.org, netfilter-devel@vger.kernel.org, linux-crypto@vger.kernel.org, patches@opensource.cirrus.com, linux-integrity@vger.kernel.org, target-devel@vger.kernel.org, linux-hardening@vger.kernel.org, Jonathan Cameron <Jonathan.Cameron@huawei.com>, Greg KH <gregkh@linuxfoundation.org> Subject: Re: [Intel-wired-lan] [PATCH 000/141] Fix fall-through warnings for Clang Date: Wed, 25 Nov 2020 13:10:00 -0800 Message-ID: <202011251240.1E67BE900@keescook> (raw) In-Reply-To: <a841536fe65bb33f1c72ce2455a6eb47a0107565.camel@HansenPartnership.com> On Tue, Nov 24, 2020 at 11:05:35PM -0800, James Bottomley wrote: > Now, what we have seems to be about 6 cases (at least what's been shown > in this thread) where a missing break would cause potentially user > visible issues. That means the value of this isn't zero, but it's not > a no-brainer massive win either. That's why I think asking what we've > invested vs the return isn't a useless exercise. The number is much higher[1]. If it were 6 in the entire history of the kernel, I would agree with you. :) Some were fixed _before_ Gustavo's effort too, which I also count towards the idea of "this is a dangerous weakness in C, and now we have stopped it forever." > But the broader point I'm making is just because the compiler people > come up with a shiny new warning doesn't necessarily mean the problem > it's detecting is one that causes us actual problems in the code base. > I'd really be happier if we had a theory about what classes of CVE or > bug we could eliminate before we embrace the next new warning. But we did! It was long ago justified and documented[2], and even links to the CWE[3] for it. This wasn't random joy over discovering a new warning we could turn on, this was turning on a warning that the compiler folks finally gave us to handle an entire class of flaws. If we need to update the code-base to address it not a useful debate -- that was settled already, even if you're only discovering it now. :P. This last patch set is about finishing that work for Clang, which is correctly even more strict than GCC. -Kees [1] https://outflux.net/slides/2019/lss/kspp.pdf calls out specific numbers (about 6.5% of the patches fixed missing breaks): v4.19: 3 of 129 v4.20: 2 of 59 v5.0: 3 of 56 v5.1: 10 of 100 v5.2: 6 of 71 v5.3: 7 of 69 And in the history of the kernel, it's been an ongoing source of flaws: $ l --no-merges | grep -i 'missing break' | wc -l 185 The frequency of such errors being "naturally" found was pretty steady until the static checkers started warning, and then it was on the rise, but the full effort flushed the rest out, and now it's dropped to almost zero: 1 v2.6.12 3 v2.6.16.28 1 v2.6.17 1 v2.6.19 2 v2.6.21 1 v2.6.22 3 v2.6.24 3 v2.6.29 1 v2.6.32 1 v2.6.33 1 v2.6.35 4 v2.6.36 3 v2.6.38 2 v2.6.39 7 v3.0 2 v3.1 2 v3.2 2 v3.3 3 v3.4 1 v3.5 8 v3.6 7 v3.7 3 v3.8 6 v3.9 3 v3.10 2 v3.11 5 v3.12 5 v3.13 2 v3.14 4 v3.15 2 v3.16 3 v3.17 2 v3.18 2 v3.19 1 v4.0 2 v4.1 5 v4.2 4 v4.5 5 v4.7 6 v4.8 1 v4.9 3 v4.10 2 v4.11 6 v4.12 3 v4.13 2 v4.14 5 v4.15 2 v4.16 7 v4.18 2 v4.19 6 v4.20 3 v5.0 12 v5.1 3 v5.2 4 v5.3 2 v5.4 1 v5.8 And the reason it's fully zero, is because we still have the cases we're cleaning up right now. Even this last one from v5.8 is specifically of the same type this series addresses: case 4: color_index = TrueCModeIndex; + break; default: return; } [2] https://www.kernel.org/doc/html/latest/process/deprecated.html#implicit-switch-case-fall-through All switch/case blocks must end in one of: break; fallthrough; continue; goto <label>; return [expression]; [3] https://cwe.mitre.org/data/definitions/484.html -- Kees Cook
next prev parent reply index Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-20 18:21 Gustavo A. R. Silva 2020-11-20 18:28 ` Joe Perches 2020-11-20 19:02 ` Gustavo A. R. Silva 2020-11-20 18:40 ` [PATCH 134/141] video: fbdev: lxfb_ops: " Gustavo A. R. Silva 2020-11-22 22:05 ` Sam Ravnborg 2020-11-24 14:44 ` Gustavo A. R. Silva 2020-11-20 18:40 ` [PATCH 135/141] video: fbdev: pm2fb: " Gustavo A. R. Silva 2020-11-20 18:53 ` [PATCH 000/141] " Jakub Kicinski 2020-11-20 19:04 ` Gustavo A. R. Silva 2020-11-20 19:30 ` Kees Cook 2020-11-20 19:51 ` Jakub Kicinski 2020-11-20 20:48 ` Kees Cook 2020-11-22 16:17 ` Kees Cook 2020-11-22 18:21 ` James Bottomley 2020-11-22 18:25 ` Joe Perches 2020-11-22 19:12 ` James Bottomley 2020-11-22 19:22 ` Joe Perches 2020-11-22 19:53 ` James Bottomley 2020-11-23 13:03 ` [Intel-wired-lan] " Gustavo A. R. Silva 2020-11-23 16:31 ` James Bottomley 2020-11-24 21:32 ` Kees Cook 2020-11-24 22:24 ` Finn Thain 2020-11-24 23:15 ` Miguel Ojeda 2020-11-24 23:53 ` Finn Thain 2020-11-25 1:05 ` Miguel Ojeda 2020-11-25 7:05 ` James Bottomley 2020-11-25 12:24 ` Nick Desaulniers 2020-11-25 21:33 ` Finn Thain 2020-11-25 22:09 ` Nick Desaulniers 2020-11-25 23:21 ` Finn Thain 2020-11-26 0:30 ` Finn Thain [not found] ` <20201125082405.1d8c23dc@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> 2020-11-25 17:04 ` Miguel Ojeda 2020-11-25 22:09 ` Nick Desaulniers 2020-11-25 21:10 ` Kees Cook [this message] 2020-11-22 20:35 ` Miguel Ojeda 2020-11-22 22:36 ` James Bottomley 2020-11-23 14:19 ` Miguel Ojeda 2020-11-23 15:58 ` James Bottomley 2020-11-23 16:24 ` Rafael J. Wysocki 2020-11-23 16:32 ` Joe Perches 2020-11-23 18:56 ` Miguel Ojeda 2020-11-23 20:37 ` James Bottomley 2020-11-25 0:32 ` Miguel Ojeda 2020-11-25 22:44 ` Edward Cree 2020-11-26 14:53 ` Miguel Ojeda 2020-11-26 15:28 ` Geert Uytterhoeven 2020-11-26 16:18 ` Karol Herbst 2020-11-26 17:05 ` Miguel Ojeda 2020-11-25 10:38 ` Andy Shevchenko 2020-11-25 9:01 ` Sean Young 2020-11-22 22:54 ` Finn Thain 2020-11-22 23:04 ` James Bottomley 2020-11-23 14:05 ` Miguel Ojeda 2020-11-24 0:58 ` Finn Thain 2020-11-24 1:05 ` Joe Perches 2020-11-24 2:48 ` Finn Thain 2020-11-24 23:46 ` Miguel Ojeda 2020-11-22 22:10 ` Sam Ravnborg 2020-11-24 1:32 ` Nick Desaulniers 2020-11-24 21:25 ` Kees Cook 2020-11-25 23:02 ` Edward Cree 2020-12-01 14:08 ` Dan Carpenter 2020-12-01 14:04 ` Dan Carpenter 2020-11-20 22:21 ` Miguel Ojeda 2020-11-23 20:03 ` Jason Gunthorpe 2020-11-24 14:47 ` Gustavo A. R. Silva [not found] ` <160616392671.21180.16517492185091399884.b4-ty@kernel.org> 2020-11-24 14:47 ` Gustavo A. R. Silva 2020-12-01 5:52 ` Martin K. Petersen 2020-12-01 8:20 ` Gustavo A. R. Silva 2020-12-08 4:52 ` (subset) " Martin K. Petersen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=202011251240.1E67BE900@keescook \ --to=keescook@chromium.org \ --cc=GR-Linux-NIC-Dev@marvell.com \ --cc=GR-everest-linux-l2@marvell.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=Jonathan.Cameron@huawei.com \ --cc=alsa-devel@alsa-project.org \ --cc=amd-gfx@lists.freedesktop.org \ --cc=bridge@lists.linux-foundation.org \ --cc=ceph-devel@vger.kernel.org \ --cc=cluster-devel@redhat.com \ --cc=coreteam@netfilter.org \ --cc=devel@driverdev.osuosl.org \ --cc=dm-devel@redhat.com \ --cc=drbd-dev@lists.linbit.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=gregkh@linuxfoundation.org \ --cc=gustavoars@kernel.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=joe@perches.com \ --cc=keyrings@vger.kernel.org \ --cc=kuba@kernel.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-afs@lists.infradead.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-atm-general@lists.sourceforge.net \ --cc=linux-block@vger.kernel.org \ --cc=linux-can@vger.kernel.org \ --cc=linux-cifs@vger.kernel.org \ --cc=linux-crypto@vger.kernel.org \ --cc=linux-decnet-user@lists.sourceforge.net \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fbdev@vger.kernel.org \ --cc=linux-geode@lists.infradead.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-hams@vger.kernel.org \ --cc=linux-hardening@vger.kernel.org \ --cc=linux-hwmon@vger.kernel.org \ --cc=linux-i3c@lists.infradead.org \ --cc=linux-ide@vger.kernel.org \ --cc=linux-iio@vger.kernel.org \ --cc=linux-input@vger.kernel.org \ --cc=linux-integrity@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux-mediatek@lists.infradead.org \ --cc=linux-mm@kvack.org \ --cc=linux-mmc@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=linux-nfs@vger.kernel.org \ --cc=linux-rdma@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=linux-sctp@vger.kernel.org \ --cc=linux-security-module@vger.kernel.org \ --cc=linux-stm32@st-md-mailman.stormreply.com \ --cc=linux-usb@vger.kernel.org \ --cc=linux-watchdog@vger.kernel.org \ --cc=linux-wireless@vger.kernel.org \ --cc=linux1394-devel@lists.sourceforge.net \ --cc=natechancellor@gmail.com \ --cc=ndesaulniers@google.com \ --cc=netdev@vger.kernel.org \ --cc=netfilter-devel@vger.kernel.org \ --cc=nouveau@lists.freedesktop.org \ --cc=ojeda@kernel.org \ --cc=op-tee@lists.trustedfirmware.org \ --cc=oss-drivers@netronome.com \ --cc=patches@opensource.cirrus.com \ --cc=rds-devel@oss.oracle.com \ --cc=reiserfs-devel@vger.kernel.org \ --cc=samba-technical@lists.samba.org \ --cc=selinux@vger.kernel.org \ --cc=target-devel@vger.kernel.org \ --cc=tipc-discussion@lists.sourceforge.net \ --cc=usb-storage@lists.one-eyed-alien.net \ --cc=virtualization@lists.linux-foundation.org \ --cc=wcn36xx@lists.infradead.org \ --cc=x86@kernel.org \ --cc=xen-devel@lists.xenproject.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-fbdev Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-fbdev/0 linux-fbdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-fbdev linux-fbdev/ https://lore.kernel.org/linux-fbdev \ linux-fbdev@vger.kernel.org public-inbox-index linux-fbdev Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-fbdev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git