From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Fri, 14 Aug 2015 16:45:56 +0200 Subject: [U-Boot] [PATCH] usb: xhci: Fix a potential NULL pointer dereference In-Reply-To: References: <1439554386-9406-1-git-send-email-s.temerkhanov@gmail.com> <201508141544.17866.marex@denx.de> Message-ID: <201508141645.56825.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Friday, August 14, 2015 at 04:29:43 PM, Sergei Temerkhanov wrote: > On Fri, Aug 14, 2015 at 4:44 PM, Marek Vasut wrote: > > On Friday, August 14, 2015 at 03:00:31 PM, Sergei Temerkhanov wrote: > >> This may happen when, for example, one tries to get a single binary for > >> similar systems where those controllers may or may not present. > > > > Please DO STOP TOP-POSTING, I mentioned it already, it is really not > > helpful. > > Sorry about that, had to struggle with Gmail on my tablet. Thanks :) > > I think your patch is missing one small bit in usb_lowlevel_init() in > > xhci.c In case xhci_lowlevel_init() fails and thus the controller is NOT > > inited, the usb_lowlevel_stop() will still try to unregister such > > controller, which will likely fail. > > > > You might want to add a check which sets the HCOR and HCCR to NULL if the > > xhci_lowlevel_init() fails. What do you think ? > > Might be useful - it's more about error handling rather then core > configurations. > For the latter xhci_hcd_init() seems to be an appropriate place to set > hccr and hcor > to NULL. > > For error handling, it might be useful to modify usb_low_level_init like > this: > > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index a6c6659..f8e2d70 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -1079,6 +1079,11 @@ int usb_lowlevel_init(int index, enum > usb_init_type init, void **controller) > > *controller = &xhcic[index]; > > + if (ret) { > + ctrl->hccr = NULL; > + ctrl->hcor = NULL; > + } > + > return ret; > } You might also want to set *controller to NULL, just to be explicitly correct. Can you please send a V2 patch ?