On 08/01/2012 11:36 AM, Marc Kleine-Budde wrote: [...] >> +/* >> + * Register CAN LED triggers for a CAN device >> + * >> + * This is normally called from a driver's probe function >> + */ >> +void can_led_init(struct net_device *netdev) >> +{ >> + struct can_priv *priv = netdev_priv(netdev); >> + void *res; >> + >> + res = devres_alloc(can_led_release, 0, GFP_KERNEL); > ^ > I'm not really sure if this is working. For example, pinctrl [1] > allocates a double pointer here. The res pointer here and in > can_led_release simply points to invalid memory. But as long as you > don't dereference it, it should work. > > [1] http://lxr.free-electrons.com/source/drivers/pinctrl/core.c#L862 The pinctrl usecase if different, pinctrl needs that extra memory because they cannot get a reference to their pinctrl they have to put. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |