On Thu, Oct 20, 2022 at 01:17:33PM -0700, Linus Torvalds wrote: > And in other cases, there's no actual difference at all, just > different register usage, so the diff looks fairly big, but doesn't > seem to be real. In one case I looked at, it started with a 'movzbl', > but it was that in both cases, because the type was actually 'unsigned > char' to begin with. But for some reason it just used different > registers. Example: > > - handle_control_request() in drivers/usb/gadget/udc/dummy_hcd.c > > The reason here *seems* to be that > > char *buf; > buf = (char *)urb->transfer_buffer; > > where it really probably should be 'u8 *buf', since it actually > does a cast to 'u8' in one place, but there isn't even any read of > that 'buf' pointer. So the difference seems to be entirely just some > "different type in assignment" cast internal to gcc that then > incidentally generated a random other choice in register allocation. I've send a patch for this now: https://lore.kernel.org/r/20221021064453.3341050-1-gregkh@xxxxxxxxxxxxxxxxxxx and will take it through the USB tree, unless Jason wants to grab it through his tree. thanks, greg k-h