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: [v2] USB: serial: io_edgeport: mark expected switch fall-throughs From: Greg Kroah-Hartman Message-Id: <20190502150443.GA12003@kroah.com> Date: Thu, 2 May 2019 17:04:43 +0200 To: "Gustavo A. R. Silva" Cc: Johan Hovold , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Kees Cook List-ID: T24gVGh1LCBNYXkgMDIsIDIwMTkgYXQgMDk6NTc6MjJBTSAtMDUwMCwgR3VzdGF2byBBLiBSLiBT aWx2YSB3cm90ZToKPiAKPiAKPiBPbiA1LzIvMTkgOTo0NyBBTSwgR3JlZyBLcm9haC1IYXJ0bWFu IHdyb3RlOgo+ID4gT24gVGh1LCBNYXkgMDIsIDIwMTkgYXQgMDQ6NDA6NDFQTSArMDIwMCwgR3Jl ZyBLcm9haC1IYXJ0bWFuIHdyb3RlOgo+ID4+IE9uIFRodSwgTWF5IDAyLCAyMDE5IGF0IDA5OjI4 OjM3QU0gLTA1MDAsIEd1c3Rhdm8gQS4gUi4gU2lsdmEgd3JvdGU6Cj4gPj4+Cj4gPj4+Cj4gPj4+ IE9uIDUvMi8xOSA4OjU2IEFNLCBKb2hhbiBIb3ZvbGQgd3JvdGU6Cj4gPj4+PiBPbiBUaHUsIE1h eSAwMiwgMjAxOSBhdCAwODoyMjozMEFNIC0wNTAwLCBHdXN0YXZvIEEuIFIuIFNpbHZhIHdyb3Rl Ogo+ID4+Pj4+Cj4gPj4+Pj4KPiA+Pj4+PiBPbiA1LzIvMTkgNToyNiBBTSwgSm9oYW4gSG92b2xk IHdyb3RlOgo+ID4+Pj4+PiBPbiBXZWQsIE1heSAwMSwgMjAxOSBhdCAwNDozMzoyOVBNIC0wNTAw LCBHdXN0YXZvIEEuIFIuIFNpbHZhIHdyb3RlOgo+ID4+Pj4+Pj4gSW4gcHJlcGFyYXRpb24gdG8g ZW5hYmxpbmcgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaCwgbWFyayBzd2l0Y2gKPiA+Pj4+Pj4+IGNh c2VzIHdoZXJlIHdlIGFyZSBleHBlY3RpbmcgdG8gZmFsbCB0aHJvdWdoLgo+ID4+Pj4+Pj4KPiA+ Pj4+Pj4+IFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGZvbGxvd2luZyB3YXJuaW5nczoKPiA+Pj4+Pj4+ Cj4gPj4+Pj4+PiBkcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYzogSW4gZnVuY3Rpb24g 4oCYcHJvY2Vzc19yY3ZkX2RhdGHigJk6Cj4gPj4+Pj4+PiBkcml2ZXJzL3VzYi9zZXJpYWwvaW9f ZWRnZXBvcnQuYzoxNzUwOjc6IHdhcm5pbmc6IHRoaXMgc3RhdGVtZW50IG1heSBmYWxsIHRocm91 Z2ggWy1XaW1wbGljaXQtZmFsbHRocm91Z2g9XQo+ID4+Pj4+Pj4gICAgIGlmIChidWZmZXJMZW5n dGggPT0gMCkgewo+ID4+Pj4+Pj4gICAgICAgIF4KPiA+Pj4+Pj4+IGRyaXZlcnMvdXNiL3Nlcmlh bC9pb19lZGdlcG9ydC5jOjE3NTU6Mzogbm90ZTogaGVyZQo+ID4+Pj4+Pj4gICAgY2FzZSBFWFBF Q1RfSERSMjoKPiA+Pj4+Pj4+ICAgIF5+fn4KPiA+Pj4+Pj4+IGRyaXZlcnMvdXNiL3NlcmlhbC9p b19lZGdlcG9ydC5jOjE4MTA6ODogd2FybmluZzogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhy b3VnaCBbLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD1dCj4gPj4+Pj4+PiAgICAgIGlmIChidWZmZXJM ZW5ndGggPT0gMCkgewo+ID4+Pj4+Pj4gICAgICAgICBeCj4gPj4+Pj4+PiBkcml2ZXJzL3VzYi9z ZXJpYWwvaW9fZWRnZXBvcnQuYzoxODE2OjM6IG5vdGU6IGhlcmUKPiA+Pj4+Pj4+ICAgIGNhc2Ug RVhQRUNUX0RBVEE6IC8qIEV4cGVjdCBkYXRhICovCj4gPj4+Pj4+PiAgICBefn5+Cj4gPj4+Pj4+ Pgo+ID4+Pj4+Pj4gV2FybmluZyBsZXZlbCAzIHdhcyB1c2VkOiAtV2ltcGxpY2l0LWZhbGx0aHJv dWdoPTMKPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBOb3RpY2UgdGhhdCwgaW4gdGhpcyBwYXJ0aWN1bGFy IGNhc2UsIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBtb2RpZmllZAo+ID4+Pj4+Pj4gaW4gYWNjb3Jk YW5jZSB3aXRoIHdoYXQgR0NDIGlzIGV4cGVjdGluZyB0byBmaW5kLgo+ID4+Pj4+Pj4KPiA+Pj4+ Pj4+IFRoaXMgcGF0Y2ggaXMgcGFydCBvZiB0aGUgb25nb2luZyBlZmZvcnRzIHRvIGVuYWJsZQo+ ID4+Pj4+Pj4gLVdpbXBsaWNpdC1mYWxsdGhyb3VnaC4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBTaWdu ZWQtb2ZmLWJ5OiBHdXN0YXZvIEEuIFIuIFNpbHZhIDxndXN0YXZvQGVtYmVkZGVkb3IuY29tPgo+ ID4+Pj4+Pj4gLS0tCj4gPj4+Pj4+PiBDaGFuZ2VzIGluIHYyOgo+ID4+Pj4+Pj4gIC0gV2Fybmlu ZyBsZXZlbCAzIGlzIG5vdyB1c2VkOiAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTMKPiA+Pj4+Pj4+ ICAgIGluc3RlYWQgb2Ygd2FybmluZyBsZXZlbCAyLgo+ID4+Pj4+Pj4gIC0gQWxsIHdhcm5pbmdz IGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGFyZSBhZGRyZXNzZWQgbm93Lgo+ID4+Pj4+Pj4KPiA+ Pj4+Pj4+IE5vdGljZSB0aGF0IHRoZXNlIGFyZSB0aGUgbGFzdCByZW1haW5pbmcgZmFsbC10aHJv dWdoIHdhcm5pbmdzCj4gPj4+Pj4+PiBpbiB0aGUgVVNCIHN1YnN5c3RlbS4gOikKPiA+Pj4+Pj4K PiA+Pj4+Pj4+ICBkcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYyB8IDMgKystCj4gPj4+ Pj4+PiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4+ Pj4+Pj4KPiA+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBv cnQuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCj4gPj4+Pj4+PiBpbmRleCA0 Y2EzMWMwZTQxNzQuLjdhZDEwMzI4ZjRlMiAxMDA2NDQKPiA+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMv dXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCj4gPj4+Pj4+PiArKysgYi9kcml2ZXJzL3VzYi9zZXJp YWwvaW9fZWRnZXBvcnQuYwo+ID4+Pj4+Pj4gQEAgLTE3NTEsNyArMTc1MSw3IEBAIHN0YXRpYyB2 b2lkIHByb2Nlc3NfcmN2ZF9kYXRhKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFs LAo+ID4+Pj4+Pj4gIAkJCQllZGdlX3NlcmlhbC0+cnhTdGF0ZSA9IEVYUEVDVF9IRFIyOwo+ID4+ Pj4+Pj4gIAkJCQlicmVhazsKPiA+Pj4+Pj4+ICAJCQl9Cj4gPj4+Pj4+PiAtCQkJLyogb3RoZXJ3 aXNlLCBkcm9wIG9uIHRocm91Z2ggKi8KPiA+Pj4+Pj4+ICsJCQkvKiBGYWxsIHRocm91Z2ggLSBv dGhlcndpc2UsIGRyb3Agb24gdGhyb3VnaCAqLwo+ID4+Pj4+Pj4gIAkJY2FzZSBFWFBFQ1RfSERS MjoKPiA+Pj4+Pj4+ICAJCQllZGdlX3NlcmlhbC0+cnhIZWFkZXIyID0gKmJ1ZmZlcjsKPiA+Pj4+ Pj4+ICAJCQkrK2J1ZmZlcjsKPiA+Pj4+Pj4+IEBAIC0xODEzLDYgKzE4MTMsNyBAQCBzdGF0aWMg dm9pZCBwcm9jZXNzX3JjdmRfZGF0YShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3Nlcmlh bCwKPiA+Pj4+Pj4+ICAJCQkJfQo+ID4+Pj4+Pj4gIAkJCQkvKiBFbHNlLCBkcm9wIHRocm91Z2gg Ki8KPiA+Pj4+Pj4+ICAJCQl9Cj4gPj4+Pj4+PiArCQkJLyogRmFsbCB0aHJvdWdoICovCj4gPj4+ Pj4+PiAgCQljYXNlIEVYUEVDVF9EQVRBOiAvKiBFeHBlY3QgZGF0YSAqLwo+ID4+Pj4+Pgo+ID4+ Pj4+PiBMb29rcyBsaWtlIHlvdSBmb3Jnb3QgdG8gdGFrZSB0aGUgb3JpZ2luYWwgcmV2aWV3IGZl ZWRiYWNrIHlvdSBnb3QgaW50bwo+ID4+Pj4+PiBhY2NvdW50Ogo+ID4+Pj4+Pgo+ID4+Pj4+PiAJ aHR0cHM6Ly9sa21sLmtlcm5lbC5vcmcvci84N2sxemY0azI0LmZzZkBtaXJhY3VsaXgubW9yay5u bwo+ID4+Pj4+Pgo+ID4+Pj4+Cj4gPj4+Pj4gT2gsIHRoZSB0aGluZyBpcyB0aGF0IHRoZSBmYWxs LXRocm91Z2ggY29tbWVudHMgaGF2ZSB0byBiZSBwbGFjZWQgYXQKPiA+Pj4+PiB0aGUgdmVyeSBi b3R0b20gb2YgdGhlIGNhc2UuIEFsc28sIGJhc2VkIG9uIHRoYXQgZmVlZGJhY2ssIHRoaXMgdGlt ZQo+ID4+Pj4+IEkgbGVmdCB0aGUgIkVsc2UsIGRyb3AgdGhyb3VnaCIgY29tbWVudCBpbiBwbGFj ZSwgc28gcGVvcGxlIGNhbiBiZQo+ID4+Pj4+IGluZm9ybWVkIHRoYXQgc3VjaCBmYWxsLXRocm91 Z2ggaXMgY29uZGl0aW9uYWwuCj4gPj4+Pj4KPiA+Pj4+PiBXaGF0IGRvIHlvdSB0aGluayBhYm91 dCB0aGlzOgo+ID4+Pj4+Cj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9p b19lZGdlcG9ydC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMKPiA+Pj4+PiBp bmRleCA0Y2EzMWMwZTQxNzQuLjUyZjI3ZmM4MjU2MyAxMDA2NDQKPiA+Pj4+PiAtLS0gYS9kcml2 ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvdXNiL3Nl cmlhbC9pb19lZGdlcG9ydC5jCj4gPj4+Pj4gQEAgLTE3NTEsNyArMTc1MSw3IEBAIHN0YXRpYyB2 b2lkIHByb2Nlc3NfcmN2ZF9kYXRhKHN0cnVjdCBlZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFs LAo+ID4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRnZV9zZXJpYWwtPnJ4 U3RhdGUgPSBFWFBFQ1RfSERSMjsKPiA+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+ID4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+Pj4+PiAtICAg ICAgICAgICAgICAgICAgICAgICAvKiBvdGhlcndpc2UsIGRyb3Agb24gdGhyb3VnaCAqLwo+ID4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAtIG90aGVyd2lzZSwg ZHJvcCBvbiB0aHJvdWdoICovCj4gPj4+Pj4gICAgICAgICAgICAgICAgIGNhc2UgRVhQRUNUX0hE UjI6Cj4gPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgZWRnZV9zZXJpYWwtPnJ4SGVhZGVy MiA9ICpidWZmZXI7Cj4gPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgKytidWZmZXI7Cj4g Pj4+Pj4gQEAgLTE4MTMsNiArMTgxMywxMSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3JjdmRfZGF0 YShzdHJ1Y3QgZWRnZXBvcnRfc2VyaWFsICplZGdlX3NlcmlhbCwKPiA+Pj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KPiA+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIEVsc2UsIGRyb3AgdGhyb3VnaCAqLwo+ID4+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgIH0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAvKiBCZXdhcmUgdGhhdCwg Y3VycmVudGx5LCB0aGVyZSBhcmUgYXQgbGVhc3QgdGhyZWUKPiA+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgKiBicmVhayBzdGF0ZW1lbnRzIGluIHRoaXMgY2FzZSBibG9jaywgc28gdGhl Cj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICogZmFsbC10aHJvdWdoIG1hcmtlZCBi ZWxvdyBpcyBOT1QgdW5jb25kaXRpb25hbC4KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgKi8KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggKi8K PiA+Pj4+PiAgICAgICAgICAgICAgICAgY2FzZSBFWFBFQ1RfREFUQTogLyogRXhwZWN0IGRhdGEg Ki8KPiA+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyTGVuZ3RoIDwgZWRn ZV9zZXJpYWwtPnJ4Qnl0ZXNSZW1haW5pbmcpIHsKPiA+Pj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJ4TGVuID0gYnVmZmVyTGVuZ3RoOwo+ID4+Pj4KPiA+Pj4+IEl0J3MgYmV0 dGVyIHRoYW4gdjIsIGJ1dCBJIHRob3VnaHQgeW91IHNhaWQgeW91IHdlcmUgZ29ubmEgbG9vayBp bnRvCj4gPj4+PiByZXN0cnVjdHVyaW5nIHRoZSBjb2RlIHRvIG1haW50YWluIChvciBldmVuIGlt cHJvdmUpIHJlYWRhYmlsaXR5Pwo+ID4+Pj4KPiA+Pj4KPiA+Pj4gQXQgZmlyc3QsIEkgdGhvdWdo dCBhYm91dCB0aGF0LCBidXQgbm93IEkgZG9uJ3QgdGhpbmsgdGhhdCdzIHJlYWxpc3RpYy4KPiA+ Pj4gSSdkIHR1cm4gdGhlIGlmLWVsc2UgaW50byBhIHN3aXRjaCwgYW5kIGJhc2VkIG9uIHRoZSBo aXN0b3J5IG9mIGZlZWRiYWNrCj4gPj4+IG9uIHRoaXMgcGF0Y2gsIHdlIHdpbGwgZW5kIHVwIGhh dmluZyB0aGUgc2FtZSBjb21wbGFpbnMgYWJvdXQgdGhlIGJyZWFrCj4gPj4+IHN0YXRlbWVudHMg aW4gdGhhdCBuZXcgc3dpdGNoIGFuZCB0aGUgcG9zc2liaWxpdHkgb2YgYSBmYWxsLXRocm91Z2gg dG8KPiA+Pj4gY2FzZSBFWFBFQ1RfREFUQS4gQXQgdGhlIGVuZCBJIHdvdWxkIHN0aWxsIGhhdmUg dG8gYWRkIGEgY29tbWVudCBleHBsYWluaW5nCj4gPj4+IHRoYXQgdGhlIGxhc3QgZmFsbC10aHJv dWdoIG1hcmsgaW4gdW5jb25kaXRpb25hbC4KPiA+Pgo+ID4+IEkgbG92ZSBpdCBob3cgbm8gb25l IGlzIGJsYW1pbmcgdGhlIG9yaWdpbmFsIGF1dGhvciBvZiB0aGlzIGNvZGUgKGkuZS4KPiA+PiBt ZS4uLikKPiA+Pgo+ID4+IExldCBtZSBzZWUgaWYgSSBjYW4gZml4IGl0IHVwIHRvIGJlIG1vcmUg InNhbmUiLCB0aGlzIGlzIG15IGZhdWx0Lgo+ID4gCj4gPiBIb3cgYWJvdXQgdGhlIGZvbGxvd2lu ZyBwYXRjaD8gIEpvaGFuLCB0aGlzIGxvb2sgbmljZXIgdG8geW91PyAgSXQgbWFrZXMKPiA+IG1v cmUgc2Vuc2UgdG8gbWUuCj4gPiAKPiAKPiBUaGFua3MsIEdyZWcuIEp1c3Qgbm90aWNlIHRoYXQs IHVuZm9ydHVuYXRlbHksIHRoZSBvcmlnaW5hbCBjb21wbGFpbnMgYXJlCj4gc3RpbGwgYXBwbGlj YWJsZSB0byB5b3VyIHBhdGNoLiA6LwoKUmVhbGx5PyAgSSBnb3QgcmlkIG9mIHRoZSBjcmF6eSBu ZXN0aW5nLCBpdCBzaG91bGQgYmUgbW9yZSBvYnZpb3VzIHdoYXQKaXMgaGFwcGVuaW5nIGhlcmUg bm93OgoKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYyBi L2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdlcG9ydC5jCj4gPiBpbmRleCA0Y2EzMWMwZTQxNzQu LjczMjA4MWIzNzE4ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb19lZGdl cG9ydC5jCj4gPiArKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwo+ID4gQEAg LTE3NTEsNyArMTc1MSw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcmN2ZF9kYXRhKHN0cnVjdCBl ZGdlcG9ydF9zZXJpYWwgKmVkZ2Vfc2VyaWFsLAo+ID4gIAkJCQllZGdlX3NlcmlhbC0+cnhTdGF0 ZSA9IEVYUEVDVF9IRFIyOwo+ID4gIAkJCQlicmVhazsKPiA+ICAJCQl9Cj4gPiAtCQkJLyogb3Ro ZXJ3aXNlLCBkcm9wIG9uIHRocm91Z2ggKi8KPiA+ICsJCQkvKiBGYWxsIHRocm91Z2ggKi8KPiA+ ICsKCiJvdGhlcndpc2UiIG1ha2VzIG5vIHNlbnNlIGhlcmUsIGl0J3Mgb2J2aW91cyB0aGF0IGlm IHRoZSBidWZmZXIgaXNuJ3QKYmlnIGVub3VnaCB3ZSBuZWVkIHRvIHBhc3MgdGhyb3VnaCBhbmQg a2VlcCBwYXJzaW5nLgoKPiA+ICAJCWNhc2UgRVhQRUNUX0hEUjI6Cj4gPiAgCQkJZWRnZV9zZXJp YWwtPnJ4SGVhZGVyMiA9ICpidWZmZXI7Cj4gPiAgCQkJKytidWZmZXI7Cj4gPiBAQCAtMTc5MCwy OSArMTc5MSwyMSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3JjdmRfZGF0YShzdHJ1Y3QgZWRnZXBv cnRfc2VyaWFsICplZGdlX3NlcmlhbCwKPiA+ICAJCQkJCQllZGdlX3NlcmlhbC0+cnhIZWFkZXIy LCAwKTsKPiA+ICAJCQkJZWRnZV9zZXJpYWwtPnJ4U3RhdGUgPSBFWFBFQ1RfSERSMTsKPiA+ICAJ CQkJYnJlYWs7CgpUaGUgc3dpdGNoIGNhc2UgaXMgYnJva2VuIG91dCBoZXJlLCBzbyBsZXQncyB1 bmluZGVudCB0aGUgbmV4dCBibG9jazoKCgo+ID4gLQkJCX0gZWxzZSB7Cj4gPiAtCQkJCWVkZ2Vf c2VyaWFsLT5yeFBvcnQgPQo+ID4gLQkJCQkgICAgSU9TUF9HRVRfSERSX1BPUlQoZWRnZV9zZXJp YWwtPnJ4SGVhZGVyMSk7Cj4gPiAtCQkJCWVkZ2Vfc2VyaWFsLT5yeEJ5dGVzUmVtYWluaW5nID0K PiA+IC0JCQkJICAgIElPU1BfR0VUX0hEUl9EQVRBX0xFTigKPiA+IC0JCQkJCQllZGdlX3Nlcmlh bC0+cnhIZWFkZXIxLAo+ID4gLQkJCQkJCWVkZ2Vfc2VyaWFsLT5yeEhlYWRlcjIpOwo+ID4gLQkJ CQlkZXZfZGJnKGRldiwgIiVzIC0gRGF0YSBmb3IgUG9ydCAldSBMZW4gJXVcbiIsCj4gPiAtCQkJ CQlfX2Z1bmNfXywKPiA+IC0JCQkJCWVkZ2Vfc2VyaWFsLT5yeFBvcnQsCj4gPiAtCQkJCQllZGdl X3NlcmlhbC0+cnhCeXRlc1JlbWFpbmluZyk7Cj4gPiAtCj4gPiAtCQkJCS8qIEFTU0VSVChEZXZF eHQtPlJ4UG9ydCA8IERldkV4dC0+TnVtUG9ydHMpOwo+ID4gLQkJCQkgKiBBU1NFUlQoRGV2RXh0 LT5SeEJ5dGVzUmVtYWluaW5nIDwKPiA+IC0JCQkJICoJCUlPU1BfTUFYX0RBVEFfTEVOR1RIKTsK PiA+IC0JCQkJICovCj4gPiAtCj4gPiAtCQkJCWlmIChidWZmZXJMZW5ndGggPT0gMCkgewo+ID4g LQkJCQkJZWRnZV9zZXJpYWwtPnJ4U3RhdGUgPSBFWFBFQ1RfREFUQTsKPiA+IC0JCQkJCWJyZWFr Owo+ID4gLQkJCQl9Cj4gPiAtCQkJCS8qIEVsc2UsIGRyb3AgdGhyb3VnaCAqLwo+ID4gIAkJCX0K PiA+ICsKPiA+ICsJCQllZGdlX3NlcmlhbC0+cnhQb3J0ID0gSU9TUF9HRVRfSERSX1BPUlQoZWRn ZV9zZXJpYWwtPnJ4SGVhZGVyMSk7Cj4gPiArCQkJZWRnZV9zZXJpYWwtPnJ4Qnl0ZXNSZW1haW5p bmcgPSBJT1NQX0dFVF9IRFJfREFUQV9MRU4oZWRnZV9zZXJpYWwtPnJ4SGVhZGVyMSwKPiA+ICsJ CQkJCQkJCQkgICAgICBlZGdlX3NlcmlhbC0+cnhIZWFkZXIyKTsKPiA+ICsJCQlkZXZfZGJnKGRl diwgIiVzIC0gRGF0YSBmb3IgUG9ydCAldSBMZW4gJXVcbiIsIF9fZnVuY19fLAo+ID4gKwkJCQll ZGdlX3NlcmlhbC0+cnhQb3J0LAo+ID4gKwkJCQllZGdlX3NlcmlhbC0+cnhCeXRlc1JlbWFpbmlu Zyk7Cj4gPiArCj4gPiArCQkJaWYgKGJ1ZmZlckxlbmd0aCA9PSAwKSB7Cj4gPiArCQkJCWVkZ2Vf c2VyaWFsLT5yeFN0YXRlID0gRVhQRUNUX0RBVEE7Cj4gPiArCQkJCWJyZWFrOwo+ID4gKwkJCX0K PiA+ICsJCQkvKiBGYWxsIHRocm91Z2ggKi8KPiA+ICsKClRoaXMgc2hvdWxkIG1ha2UgaXQgbW9y ZSBvYnZpb3VzLgoKYXQgbGVhc3QgaXQgaXMgdG8gbWUgbm93LCBpdCdzIG11Y2ggZWFzaWVyIHRv IHJlYWQsIGFuZCBnY2Mgc2hvdWxkIGFsc28KYmUgaGFwcHkgYWJvdXQgaXQuCgpQYXJzZXJzIGFy ZSBhIHBhaW4sIHlvdSBoYXZlIHRvIGhhbmRsZSBzdHVmZiBsaWtlIHRoaXMgaW4gbWVzc3kgd2F5 cy4KClBlcnNvbmFsbHksIEknbSBob3JyaWJsZSBhdCBwYXJzZXJzLCBidXQgdGhpcyByZWFsbHkg bG9va3MgdG8gYmUgdGhlCnNpbXBsZXN0IHdheSB0byB3cml0ZSB0aGlzIGNvZGUgYXQgdGhlIG1v bWVudC4KCkpvaGFuLCBhbnkgdGhvdWdodHM/Cgp0aGFua3MsCgpncmVnIGstaAo= 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=-8.4 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=unavailable 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 7CC45C04AAA for ; Thu, 2 May 2019 15:04:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 38DFF2081C for ; Thu, 2 May 2019 15:04:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556809495; bh=G12hwoJxaNKVEQ4UsXviaadA3S/HOz6FBGqEV5qyrTA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=wEZqhV4pbxQnOF7of2Wh/L34+9fgdNyzNJcJns4L1ChQEReVCgU4nfceZpldrlyxn loq9+o1HRwTng8Ow8gBMKtzX1nrgfKH8QKqudQUO9oZY4RtTqaoEVGP55mrOLNTf/f swJL8YSTvNx2FCyt5UJz4jriblpGyofor1CPdW2g= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726270AbfEBPEt (ORCPT ); Thu, 2 May 2019 11:04:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:59620 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726197AbfEBPEt (ORCPT ); Thu, 2 May 2019 11:04:49 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0C0C32075E; Thu, 2 May 2019 15:04:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556809487; bh=G12hwoJxaNKVEQ4UsXviaadA3S/HOz6FBGqEV5qyrTA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=wjv2WfcdF3oV4zRpKTX/st6qIZLgdY6atMy5CjFKmhIV1XQPeqE1LO+hfcJKCU42l X6+tSXGb1AW0hxsBLuqcGXRfqsoAjK9QGMyMdo7ukOSxC5rCygguvTAl/a9HznqFFc /pF5M6bHkv/nMLMNiacXV8gmQwTIgOPeiq11Vj14= Date: Thu, 2 May 2019 17:04:43 +0200 From: Greg Kroah-Hartman To: "Gustavo A. R. Silva" Cc: Johan Hovold , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Kees Cook Subject: Re: [PATCH v2] USB: serial: io_edgeport: mark expected switch fall-throughs Message-ID: <20190502150443.GA12003@kroah.com> References: <20190501213329.GA26972@embeddedor> <20190502102608.GS26546@localhost> <20190502135636.GT26546@localhost> <20190502144041.GA17960@kroah.com> <20190502144729.GB17960@kroah.com> <122f54b9-16e9-317b-42af-88bef6d6e3b0@embeddedor.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <122f54b9-16e9-317b-42af-88bef6d6e3b0@embeddedor.com> User-Agent: Mutt/1.11.4 (2019-03-13) Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Message-ID: <20190502150443.iEM5PJPoFJsRDWGt197vrPBKMCMBLzJJi7OX4aAzBiQ@z> On Thu, May 02, 2019 at 09:57:22AM -0500, Gustavo A. R. Silva wrote: > > > On 5/2/19 9:47 AM, Greg Kroah-Hartman wrote: > > On Thu, May 02, 2019 at 04:40:41PM +0200, Greg Kroah-Hartman wrote: > >> On Thu, May 02, 2019 at 09:28:37AM -0500, Gustavo A. R. Silva wrote: > >>> > >>> > >>> On 5/2/19 8:56 AM, Johan Hovold wrote: > >>>> On Thu, May 02, 2019 at 08:22:30AM -0500, Gustavo A. R. Silva wrote: > >>>>> > >>>>> > >>>>> On 5/2/19 5:26 AM, Johan Hovold wrote: > >>>>>> On Wed, May 01, 2019 at 04:33:29PM -0500, Gustavo A. R. Silva wrote: > >>>>>>> In preparation to enabling -Wimplicit-fallthrough, mark switch > >>>>>>> cases where we are expecting to fall through. > >>>>>>> > >>>>>>> This patch fixes the following warnings: > >>>>>>> > >>>>>>> drivers/usb/serial/io_edgeport.c: In function ‘process_rcvd_data’: > >>>>>>> drivers/usb/serial/io_edgeport.c:1750:7: warning: this statement may fall through [-Wimplicit-fallthrough=] > >>>>>>> if (bufferLength == 0) { > >>>>>>> ^ > >>>>>>> drivers/usb/serial/io_edgeport.c:1755:3: note: here > >>>>>>> case EXPECT_HDR2: > >>>>>>> ^~~~ > >>>>>>> drivers/usb/serial/io_edgeport.c:1810:8: warning: this statement may fall through [-Wimplicit-fallthrough=] > >>>>>>> if (bufferLength == 0) { > >>>>>>> ^ > >>>>>>> drivers/usb/serial/io_edgeport.c:1816:3: note: here > >>>>>>> case EXPECT_DATA: /* Expect data */ > >>>>>>> ^~~~ > >>>>>>> > >>>>>>> Warning level 3 was used: -Wimplicit-fallthrough=3 > >>>>>>> > >>>>>>> Notice that, in this particular case, the code comments are modified > >>>>>>> in accordance with what GCC is expecting to find. > >>>>>>> > >>>>>>> This patch is part of the ongoing efforts to enable > >>>>>>> -Wimplicit-fallthrough. > >>>>>>> > >>>>>>> Signed-off-by: Gustavo A. R. Silva > >>>>>>> --- > >>>>>>> Changes in v2: > >>>>>>> - Warning level 3 is now used: -Wimplicit-fallthrough=3 > >>>>>>> instead of warning level 2. > >>>>>>> - All warnings in the switch statement are addressed now. > >>>>>>> > >>>>>>> Notice that these are the last remaining fall-through warnings > >>>>>>> in the USB subsystem. :) > >>>>>> > >>>>>>> drivers/usb/serial/io_edgeport.c | 3 ++- > >>>>>>> 1 file changed, 2 insertions(+), 1 deletion(-) > >>>>>>> > >>>>>>> diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c > >>>>>>> index 4ca31c0e4174..7ad10328f4e2 100644 > >>>>>>> --- a/drivers/usb/serial/io_edgeport.c > >>>>>>> +++ b/drivers/usb/serial/io_edgeport.c > >>>>>>> @@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial, > >>>>>>> edge_serial->rxState = EXPECT_HDR2; > >>>>>>> break; > >>>>>>> } > >>>>>>> - /* otherwise, drop on through */ > >>>>>>> + /* Fall through - otherwise, drop on through */ > >>>>>>> case EXPECT_HDR2: > >>>>>>> edge_serial->rxHeader2 = *buffer; > >>>>>>> ++buffer; > >>>>>>> @@ -1813,6 +1813,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial, > >>>>>>> } > >>>>>>> /* Else, drop through */ > >>>>>>> } > >>>>>>> + /* Fall through */ > >>>>>>> case EXPECT_DATA: /* Expect data */ > >>>>>> > >>>>>> Looks like you forgot to take the original review feedback you got into > >>>>>> account: > >>>>>> > >>>>>> https://lkml.kernel.org/r/87k1zf4k24.fsf@miraculix.mork.no > >>>>>> > >>>>> > >>>>> Oh, the thing is that the fall-through comments have to be placed at > >>>>> the very bottom of the case. Also, based on that feedback, this time > >>>>> I left the "Else, drop through" comment in place, so people can be > >>>>> informed that such fall-through is conditional. > >>>>> > >>>>> What do you think about this: > >>>>> > >>>>> diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c > >>>>> index 4ca31c0e4174..52f27fc82563 100644 > >>>>> --- a/drivers/usb/serial/io_edgeport.c > >>>>> +++ b/drivers/usb/serial/io_edgeport.c > >>>>> @@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial, > >>>>> edge_serial->rxState = EXPECT_HDR2; > >>>>> break; > >>>>> } > >>>>> - /* otherwise, drop on through */ > >>>>> + /* Fall through - otherwise, drop on through */ > >>>>> case EXPECT_HDR2: > >>>>> edge_serial->rxHeader2 = *buffer; > >>>>> ++buffer; > >>>>> @@ -1813,6 +1813,11 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial, > >>>>> } > >>>>> /* Else, drop through */ > >>>>> } > >>>>> + /* Beware that, currently, there are at least three > >>>>> + * break statements in this case block, so the > >>>>> + * fall-through marked below is NOT unconditional. > >>>>> + */ > >>>>> + /* Fall through */ > >>>>> case EXPECT_DATA: /* Expect data */ > >>>>> if (bufferLength < edge_serial->rxBytesRemaining) { > >>>>> rxLen = bufferLength; > >>>> > >>>> It's better than v2, but I thought you said you were gonna look into > >>>> restructuring the code to maintain (or even improve) readability? > >>>> > >>> > >>> At first, I thought about that, but now I don't think that's realistic. > >>> I'd turn the if-else into a switch, and based on the history of feedback > >>> on this patch, we will end up having the same complains about the break > >>> statements in that new switch and the possibility of a fall-through to > >>> case EXPECT_DATA. At the end I would still have to add a comment explaining > >>> that the last fall-through mark in unconditional. > >> > >> I love it how no one is blaming the original author of this code (i.e. > >> me...) > >> > >> Let me see if I can fix it up to be more "sane", this is my fault. > > > > How about the following patch? Johan, this look nicer to you? It makes > > more sense to me. > > > > Thanks, Greg. Just notice that, unfortunately, the original complains are > still applicable to your patch. :/ Really? I got rid of the crazy nesting, it should be more obvious what is happening here now: > > diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c > > index 4ca31c0e4174..732081b3718f 100644 > > --- a/drivers/usb/serial/io_edgeport.c > > +++ b/drivers/usb/serial/io_edgeport.c > > @@ -1751,7 +1751,8 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial, > > edge_serial->rxState = EXPECT_HDR2; > > break; > > } > > - /* otherwise, drop on through */ > > + /* Fall through */ > > + "otherwise" makes no sense here, it's obvious that if the buffer isn't big enough we need to pass through and keep parsing. > > case EXPECT_HDR2: > > edge_serial->rxHeader2 = *buffer; > > ++buffer; > > @@ -1790,29 +1791,21 @@ static void process_rcvd_data(struct edgeport_serial *edge_serial, > > edge_serial->rxHeader2, 0); > > edge_serial->rxState = EXPECT_HDR1; > > break; The switch case is broken out here, so let's unindent the next block: > > - } else { > > - edge_serial->rxPort = > > - IOSP_GET_HDR_PORT(edge_serial->rxHeader1); > > - edge_serial->rxBytesRemaining = > > - IOSP_GET_HDR_DATA_LEN( > > - edge_serial->rxHeader1, > > - edge_serial->rxHeader2); > > - dev_dbg(dev, "%s - Data for Port %u Len %u\n", > > - __func__, > > - edge_serial->rxPort, > > - edge_serial->rxBytesRemaining); > > - > > - /* ASSERT(DevExt->RxPort < DevExt->NumPorts); > > - * ASSERT(DevExt->RxBytesRemaining < > > - * IOSP_MAX_DATA_LENGTH); > > - */ > > - > > - if (bufferLength == 0) { > > - edge_serial->rxState = EXPECT_DATA; > > - break; > > - } > > - /* Else, drop through */ > > } > > + > > + edge_serial->rxPort = IOSP_GET_HDR_PORT(edge_serial->rxHeader1); > > + edge_serial->rxBytesRemaining = IOSP_GET_HDR_DATA_LEN(edge_serial->rxHeader1, > > + edge_serial->rxHeader2); > > + dev_dbg(dev, "%s - Data for Port %u Len %u\n", __func__, > > + edge_serial->rxPort, > > + edge_serial->rxBytesRemaining); > > + > > + if (bufferLength == 0) { > > + edge_serial->rxState = EXPECT_DATA; > > + break; > > + } > > + /* Fall through */ > > + This should make it more obvious. at least it is to me now, it's much easier to read, and gcc should also be happy about it. Parsers are a pain, you have to handle stuff like this in messy ways. Personally, I'm horrible at parsers, but this really looks to be the simplest way to write this code at the moment. Johan, any thoughts? thanks, greg k-h