> On 25 Feb 2025, at 4:17 PM, andriy.shevchenko@xxxxxxxxxxxxxxx wrote: > > On Tue, Feb 25, 2025 at 10:36:03AM +0000, Aditya Garg wrote: >>>> On 25 Feb 2025, at 4:03 PM, andriy.shevchenko@xxxxxxxxxxxxxxx wrote: >>> On Tue, Feb 25, 2025 at 10:09:42AM +0000, Aditya Garg wrote: > > ... > >>>> +static int appletbdrm_probe(struct usb_interface *intf, >>>> + const struct usb_device_id *id) >>>> +{ >>>> + struct usb_endpoint_descriptor *bulk_in, *bulk_out; >>>> + struct device *dev = &intf->dev; >>>> + struct appletbdrm_device *adev; >>>> + struct drm_device *drm; >>>> + int ret; >>>> + >>>> + ret = usb_find_common_endpoints(intf->cur_altsetting, &bulk_in, &bulk_out, NULL, NULL); >>>> + if (ret) { >>>> + drm_err(drm, "Failed to find bulk endpoints\n"); >>> >>> This is simply wrong (and in this case even lead to crash in some circumstances). >>> drm_err() may not be used here. That's my point in previous discussions. >>> Independently on the subsystem the ->probe() for the sake of consistency and >>> being informative should only rely on struct device *dev, >> >> I'm not sure how drm_err works, > > It's a macro. > >> but struct drm_device does have a struct device *dev as well. > > Yes, but only when it's initialized. Looks like I initialised it after this error statement. Yeah, it an error on my part. Will wait for more reviews till tomorrow though. > >> Anyways, this is something I'll leave for Thomas to reply. > > The code above is wrong independently on his reply :-) > > -- > With Best Regards, > Andy Shevchenko > >