On Thu, Feb 23, 2012 at 10:48:12AM +0100, Julia Lawall wrote: > On Thu, 23 Feb 2012, Felipe Balbi wrote: > > >Hi, > > > >On Sat, Feb 18, 2012 at 06:04:39PM +0100, Julia Lawall wrote: > >>The function at91udc_probe in the file drivers/usb/gadget/at91_udc.c > >>contains the following code: > >> > >> udc->iclk = clk_get(dev, "udc_clk"); > >> udc->fclk = clk_get(dev, "udpck"); > >> if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk)) { > >> DBG("clocks missing\n"); > >> retval = -ENODEV; > >> /* NOTE: we "know" here that refcounts on these are NOPs */ > >> goto fail0b; > >> } > >> > >>Why is it known here that refcounts are NOPs. When does this > >>property cease to hold? clk_put is present in the corresponding > >>remove function. > > > >I guess we need to ask AT91 maintainers as I have never worked with that > >architecture, but I believe that if clk_get() fails, the clk won't get > >its reference counter incremented. It depends on how they have > >implemented their clk API. > > Sure, but it's an ||, so it might be that only one of them has > failed. Maybe someone else has an idea. aha, now I see your point. Indeed, it smells fishy. -- balbi
Attachment:
signature.asc
Description: Digital signature