[U-Boot] [UBOOT PATCH] usb: ehci-hcd: Fix crash when rootdev not initialized
Siva Durga Prasad Paladugu
siva.durga.paladugu at xilinx.com
Tue Jun 28 08:06:43 CEST 2016
Hi,
> -----Original Message-----
> From: Hans de Goede [mailto:hdegoede at redhat.com]
> Sent: Monday, June 27, 2016 4:35 PM
> To: Siva Durga Prasad Paladugu <sivadur at xilinx.com>; u-boot at lists.denx.de
> Cc: marex at denx.de; Siva Durga Prasad Paladugu <sivadur at xilinx.com>
> Subject: Re: [U-Boot] [UBOOT PATCH] usb: ehci-hcd: Fix crash when rootdev not
> initialized
>
> Hi,
>
> On 27-06-16 10:59, Siva Durga Prasad Paladugu wrote:
> > This patch fixes the issue on zynq USB failure with DM when rootdev is
> > not initialized. This variable is initalized to zero in non driver
> > model case but not in DM.
> >
> > Signed-off-by: Siva Durga Prasad Paladugu <sivadur at xilinx.com>
> > ---
> > - Tested on Zynq ZC702 board with USB DM driver model patches
> > sent by Simon.
>
> This patch does not seem like the right fix, normally something like the ehci_ctrl
> struct would be allocated by dm by setting priv_auto_alloc_size in the driver
> description, and then the data will get calloc-ed. If you're allocating the ehci_ctrl
> struct differently and not memsetting it to 0 you may have other bugs lurking, or
> may get new bugs when new members get added in the future.
This is also fine for me, no Problem.
I will reply to Simon on his patch of Zynq USB DM and will ask him to do so.
Thanks,
Siva
>
> My advice would be to use priv_auto_alloc_size, see .e.g :
> drivers/usb/host/ehci-sunxi.c
>
> If you cannot use that for some reason, make sure to memset struct ehci_Ctrl to
> 0 before calling ehci_register()
>
> Regards,
>
> Hans
>
>
>
> > ---
> > drivers/usb/host/ehci-hcd.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> > index 13aa70d..8adffa6 100644
> > --- a/drivers/usb/host/ehci-hcd.c
> > +++ b/drivers/usb/host/ehci-hcd.c
> > @@ -1624,6 +1624,8 @@ int ehci_register(struct udevice *dev, struct
> ehci_hccr *hccr,
> > goto err;
> > }
> >
> > + ctrl->rootdev = 0;
> > +
> > ret = ehci_common_init(ctrl, tweaks);
> > if (ret)
> > goto err;
> >
More information about the U-Boot
mailing list