From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg KH Subject: Re: usb HC busted? Date: Tue, 17 Jul 2018 17:52:59 +0200 Message-ID: <20180717155259.GB2416@kroah.com> References: <20180717120411.GB28592@kroah.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Alan Stern Cc: Mathias Nyman , Mathias Nyman , linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, lukaszx.szulc-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, Andy Shevchenko , Andy Shevchenko , Christoph Hellwig , Sudip Mukherjee List-Id: iommu@lists.linux-foundation.org On Tue, Jul 17, 2018 at 10:31:38AM -0400, Alan Stern wrote: > On Tue, 17 Jul 2018, Greg KH wrote: > > > > From: Sudip Mukherjee > > > Date: Tue, 10 Jul 2018 09:50:00 +0100 > > > Subject: [PATCH] hacky solution to mem-corruption > > > > > > Signed-off-by: Sudip Mukherjee > > > --- > > > drivers/usb/core/message.c | 3 ++- > > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c > > > index 7cd4ec33dbf4..7fdf7a27611d 100644 > > > --- a/drivers/usb/core/message.c > > > +++ b/drivers/usb/core/message.c > > > @@ -1398,7 +1398,8 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate) > > > remove_intf_ep_devs(iface); > > > usb_remove_sysfs_intf_files(iface); > > > } > > > - usb_disable_interface(dev, iface, true); > > > + if (!(iface->cur_altsetting && alt)) > > > + usb_disable_interface(dev, iface, true); > > > > > > > > This feels like a "correct" patch anyway, why would a driver keep > > calling set_interface to an interface that it was already set to? > > > > But can't we check for this higher up in the function? This hack will > > just not disable an interface but it will do all of the other stuff > > being asked for. Does the patch below also solve this for you? It's > > not a good solution of course, but it might work around the problem a > > bit better. > > > > thanks, > > > > greg k-h > > > > diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c > > index 1a15392326fc..0f718f1a1ca3 100644 > > --- a/drivers/usb/core/message.c > > +++ b/drivers/usb/core/message.c > > @@ -1376,6 +1376,14 @@ int usb_set_interface(struct usb_device *dev, int interface, int alternate) > > return -EINVAL; > > } > > > > + if (iface->cur_altsetting == alt) { > > + /* > > + * foolish bluetooth stack, don't try to set a setting you are > > + * already set to... > > + */ > > + return 0; > > + } > > + > > /* Make sure we have enough bandwidth for this alternate interface. > > * Remove the current alt setting and add the new alt setting. > > */ > > No, neither of these is right. It's possible to use > usb_set_interface() as a kind of "soft" reset. Even when the new > altsetting is specified to be the same as the current one, we still > have to tell the lower-layer drivers and hardware about it. You are right, it's a hacky soft reset, I was just trying to figure out what the bluetooth driver was trying to do. I wouldn't expect it to be calling that function a lot, but I guess it does :( thanks, greg k-h 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: usb HC busted? From: Greg Kroah-Hartman Message-Id: <20180717155259.GB2416@kroah.com> Date: Tue, 17 Jul 2018 17:52:59 +0200 To: Alan Stern Cc: Sudip Mukherjee , Mathias Nyman , Andy Shevchenko , Andy Shevchenko , Mathias Nyman , linux-usb@vger.kernel.org, lukaszx.szulc@intel.com, Christoph Hellwig , Marek Szyprowski , iommu@lists.linux-foundation.org List-ID: T24gVHVlLCBKdWwgMTcsIDIwMTggYXQgMTA6MzE6MzhBTSAtMDQwMCwgQWxhbiBTdGVybiB3cm90 ZToKPiBPbiBUdWUsIDE3IEp1bCAyMDE4LCBHcmVnIEtIIHdyb3RlOgo+IAo+ID4gPiBGcm9tOiBT dWRpcCBNdWtoZXJqZWUgPHN1ZGlwbS5tdWtoZXJqZWVAZ21haWwuY29tPgo+ID4gPiBEYXRlOiBU dWUsIDEwIEp1bCAyMDE4IDA5OjUwOjAwICswMTAwCj4gPiA+IFN1YmplY3Q6IFtQQVRDSF0gaGFj a3kgc29sdXRpb24gdG8gbWVtLWNvcnJ1cHRpb24KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6 IFN1ZGlwIE11a2hlcmplZSA8c3VkaXBtLm11a2hlcmplZUBnbWFpbC5jb20+Cj4gPiA+IC0tLQo+ ID4gPiAgZHJpdmVycy91c2IvY29yZS9tZXNzYWdlLmMgfCAzICsrLQo+ID4gPiAgMSBmaWxlIGNo YW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4gPiAKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jIGIvZHJpdmVycy91c2IvY29yZS9tZXNz YWdlLmMKPiA+ID4gaW5kZXggN2NkNGVjMzNkYmY0Li43ZmRmN2EyNzYxMWQgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvdXNi L2NvcmUvbWVzc2FnZS5jCj4gPiA+IEBAIC0xMzk4LDcgKzEzOTgsOCBAQCBpbnQgdXNiX3NldF9p bnRlcmZhY2Uoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGludGVyZmFjZSwgaW50IGFsdGVy bmF0ZSkKPiA+ID4gIAkJcmVtb3ZlX2ludGZfZXBfZGV2cyhpZmFjZSk7Cj4gPiA+ICAJCXVzYl9y ZW1vdmVfc3lzZnNfaW50Zl9maWxlcyhpZmFjZSk7Cj4gPiA+ICAJfQo+ID4gPiAtCXVzYl9kaXNh YmxlX2ludGVyZmFjZShkZXYsIGlmYWNlLCB0cnVlKTsKPiA+ID4gKwlpZiAoIShpZmFjZS0+Y3Vy X2FsdHNldHRpbmcgJiYgYWx0KSkKPiA+ID4gKwkJdXNiX2Rpc2FibGVfaW50ZXJmYWNlKGRldiwg aWZhY2UsIHRydWUpOwo+ID4gCj4gPiAKPiA+IAo+ID4gVGhpcyBmZWVscyBsaWtlIGEgImNvcnJl Y3QiIHBhdGNoIGFueXdheSwgd2h5IHdvdWxkIGEgZHJpdmVyIGtlZXAKPiA+IGNhbGxpbmcgc2V0 X2ludGVyZmFjZSB0byBhbiBpbnRlcmZhY2UgdGhhdCBpdCB3YXMgYWxyZWFkeSBzZXQgdG8/Cj4g PiAKPiA+IEJ1dCBjYW4ndCB3ZSBjaGVjayBmb3IgdGhpcyBoaWdoZXIgdXAgaW4gdGhlIGZ1bmN0 aW9uPyAgVGhpcyBoYWNrIHdpbGwKPiA+IGp1c3Qgbm90IGRpc2FibGUgYW4gaW50ZXJmYWNlIGJ1 dCBpdCB3aWxsIGRvIGFsbCBvZiB0aGUgb3RoZXIgc3R1ZmYKPiA+IGJlaW5nIGFza2VkIGZvci4g IERvZXMgdGhlIHBhdGNoIGJlbG93IGFsc28gc29sdmUgdGhpcyBmb3IgeW91PyAgSXQncwo+ID4g bm90IGEgZ29vZCBzb2x1dGlvbiBvZiBjb3Vyc2UsIGJ1dCBpdCBtaWdodCB3b3JrIGFyb3VuZCB0 aGUgcHJvYmxlbSBhCj4gPiBiaXQgYmV0dGVyLgo+ID4gCj4gPiB0aGFua3MsCj4gPiAKPiA+IGdy ZWcgay1oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYyBi L2RyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jCj4gPiBpbmRleCAxYTE1MzkyMzI2ZmMuLjBmNzE4 ZjFhMWNhMyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jCj4gPiAr KysgYi9kcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYwo+ID4gQEAgLTEzNzYsNiArMTM3NiwxNCBA QCBpbnQgdXNiX3NldF9pbnRlcmZhY2Uoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgaW50IGludGVy ZmFjZSwgaW50IGFsdGVybmF0ZSkKPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gIAl9Cj4gPiAg Cj4gPiArCWlmIChpZmFjZS0+Y3VyX2FsdHNldHRpbmcgPT0gYWx0KSB7Cj4gPiArCQkvKgo+ID4g KwkJICogZm9vbGlzaCBibHVldG9vdGggc3RhY2ssIGRvbid0IHRyeSB0byBzZXQgYSBzZXR0aW5n IHlvdSBhcmUKPiA+ICsJCSAqIGFscmVhZHkgc2V0IHRvLi4uCj4gPiArCQkgKi8KPiA+ICsJCXJl dHVybiAwOwo+ID4gKwl9Cj4gPiArCj4gPiAgCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBi YW5kd2lkdGggZm9yIHRoaXMgYWx0ZXJuYXRlIGludGVyZmFjZS4KPiA+ICAJICogUmVtb3ZlIHRo ZSBjdXJyZW50IGFsdCBzZXR0aW5nIGFuZCBhZGQgdGhlIG5ldyBhbHQgc2V0dGluZy4KPiA+ICAJ ICovCj4gCj4gTm8sIG5laXRoZXIgb2YgdGhlc2UgaXMgcmlnaHQuICBJdCdzIHBvc3NpYmxlIHRv IHVzZSAKPiB1c2Jfc2V0X2ludGVyZmFjZSgpIGFzIGEga2luZCBvZiAic29mdCIgcmVzZXQuICBF dmVuIHdoZW4gdGhlIG5ldyAKPiBhbHRzZXR0aW5nIGlzIHNwZWNpZmllZCB0byBiZSB0aGUgc2Ft ZSBhcyB0aGUgY3VycmVudCBvbmUsIHdlIHN0aWxsIAo+IGhhdmUgdG8gdGVsbCB0aGUgbG93ZXIt bGF5ZXIgZHJpdmVycyBhbmQgaGFyZHdhcmUgYWJvdXQgaXQuCgpZb3UgYXJlIHJpZ2h0LCBpdCdz IGEgaGFja3kgc29mdCByZXNldCwgSSB3YXMganVzdCB0cnlpbmcgdG8gZmlndXJlIG91dAp3aGF0 IHRoZSBibHVldG9vdGggZHJpdmVyIHdhcyB0cnlpbmcgdG8gZG8uICBJIHdvdWxkbid0IGV4cGVj dCBpdCB0byBiZQpjYWxsaW5nIHRoYXQgZnVuY3Rpb24gYSBsb3QsIGJ1dCBJIGd1ZXNzIGl0IGRv ZXMgOigKCnRoYW5rcywKCmdyZWcgay1oCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBh IG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZv IGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK