On Sat, Jul 25, 2020 at 05:24:20PM +0200, Bastien Nocera wrote: > On Sat, 2020-07-25 at 10:59 -0400, Alan Stern wrote: > <snip> > > > + udev = to_usb_device(dev); > > > + if (usb_device_match_id(udev, new_udriver->id_table) == NULL && > > > + (!new_udriver->match || new_udriver->match(udev) != 0)) > > > + return 0; > > > + > > > + (void)!device_reprobe(dev); > > > > What's that '!' doing hiding in there? It doesn't affect the final > > outcome, but it sure looks weird -- if people notice it at all. > > It's how we stop gcc from complaining about the warn_unused_result > attribute on device_reprobe()... (void) is enough with clang, but not > with gcc. Hmmm. Maybe this is an indication that device_reprobe() doesn't really need to be __must_check. Greg, do you know why it's annotated this way? Alan Stern