All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabio Baltieri <fabio.baltieri@gmail.com>
To: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Wolfgang Grandegger <wg@grandegger.com>,
	linux-can@vger.kernel.org, linux-kernel@vger.kernel.org,
	Oliver Hartkopp <socketcan@hartkopp.net>
Subject: Re: [PATCH can-next v3 1/2] can: add tx/rx LED trigger support
Date: Tue, 31 Jul 2012 13:55:39 +0200	[thread overview]
Message-ID: <20120731115539.GA30417@gmail.com> (raw)
In-Reply-To: <5017AFAB.1040609@pengutronix.de>

On Tue, Jul 31, 2012 at 12:12:59PM +0200, 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);
> >> +
> >> +	priv->tx_led_trig_name = kasprintf(GFP_KERNEL, "%s-tx", netdev->name);
> >> +	if (!priv->tx_led_trig_name)
> >> +		goto tx_led_failed;
> > 
> > Just return here?

Right.

> >> +	priv->rx_led_trig_name = kasprintf(GFP_KERNEL, "%s-rx", netdev->name);
> >> +	if (!priv->rx_led_trig_name)
> >> +		goto rx_led_failed;
> >> +
> >> +	led_trigger_register_simple(priv->tx_led_trig_name,
> >> +				    &priv->tx_led_trig);
> >> +	led_trigger_register_simple(priv->rx_led_trig_name,
> >> +				    &priv->rx_led_trig);
> >> +
> >> +	return;
> >> +
> >> +rx_led_failed:
> >> +	kfree(priv->tx_led_trig_name);
> >> +	priv->tx_led_trig_name = NULL;
> >> +tx_led_failed:
> >> +	return;
> > 
> > In case of error the function returns silently. Is this by purpose? What
> > happens if CAN_LEDS is enabled but no LEDs are assigned?
> 
> It's a bit strange, but led_trigger_register_simple() can fail silently,
> too. Or better it has no return value, but does a warning printk in case
> of an error.

Well, that's in line with the behviour of leds trigger registration in
other subsystems out there (mac80211 and power_supply for instance) but
now that you pointed it out, I agree that this is not really nice to the
user.  led_trigger_register_simple already has a printk to KERN_ERR, I
may add another one in the error path (if we keep the kasprintf).

> 
> > 
> >> +}
> >> +EXPORT_SYMBOL_GPL(can_led_init);
> >> +
> >> +/*
> >> + * Unregister CAN LED triggers for a CAN device
> >> + *
> >> + * This is normally called from a driver's remove function
> >> + */
> >> +void can_led_exit(struct net_device *netdev)
> >> +{
> >> +	struct can_priv *priv = netdev_priv(netdev);
> >> +
> >> +	led_trigger_unregister_simple(priv->tx_led_trig);
> >> +	led_trigger_unregister_simple(priv->rx_led_trig);
> >> +
> >> +	kfree(priv->tx_led_trig_name);
> >> +	kfree(priv->rx_led_trig_name);
> >> +}
> >> +EXPORT_SYMBOL_GPL(can_led_exit);
> >> diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h
> >> index 2b2fc34..167b04a 100644
> >> --- a/include/linux/can/dev.h
> >> +++ b/include/linux/can/dev.h
> >> @@ -16,6 +16,7 @@
> >>  #include <linux/can.h>
> >>  #include <linux/can/netlink.h>
> >>  #include <linux/can/error.h>
> >> +#include <linux/can/led.h>
> >>  
> >>  /*
> >>   * CAN mode
> >> @@ -52,6 +53,13 @@ struct can_priv {
> >>  
> >>  	unsigned int echo_skb_max;
> >>  	struct sk_buff **echo_skb;
> >> +
> >> +#ifdef CONFIG_CAN_LEDS
> >> +	struct led_trigger *tx_led_trig;
> >> +	char *tx_led_trig_name;
> >> +	struct led_trigger *rx_led_trig;
> >> +	char *rx_led_trig_name;
> >> +#endif
> > 
> > Do we need to store the names?
> 
> Yes, Seems, so the name is not copied:
> 
> http://lxr.free-electrons.com/source/drivers/leds/led-triggers.c#L253
> 
> Marc

Actually we may try to exploit struct led_trigger to get back the
pointers, but then we have to free the names before calling
led_trigger_unregister, and that's going to be race against
led_trigger_show().  Anyway, those pointers would go away using a
devm-based allocation, so I'll keep that in mind.

Thanks,
Fabio

  reply	other threads:[~2012-07-31 11:53 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-30 19:20 [PATCH can-next v3 1/2] can: add tx/rx LED trigger support Fabio Baltieri
2012-07-30 19:20 ` [PATCH can-next v3 2/2] can: flexcan: add " Fabio Baltieri
2012-07-30 21:17 ` [PATCH can-next v3 1/2] can: add tx/rx " Marc Kleine-Budde
2012-07-31  6:57   ` Fabio Baltieri
2012-07-31  7:10     ` Marc Kleine-Budde
2012-07-31 11:57       ` Fabio Baltieri
2012-07-31 12:00         ` Marc Kleine-Budde
2012-07-31 22:05           ` [PATCH can-next v4] " Fabio Baltieri
2012-08-01  9:36             ` Marc Kleine-Budde
2012-08-01 10:07               ` Marc Kleine-Budde
2012-08-01 10:30               ` Fabio Baltieri
2012-08-01 11:37                 ` Marc Kleine-Budde
2012-08-01 11:49               ` [PATCH can-next v5 1/2] " Fabio Baltieri
2012-08-01 11:49                 ` [PATCH can-next v5 2/2] can: flexcan: add " Fabio Baltieri
2012-08-01 11:53                   ` Marc Kleine-Budde
2012-08-01 12:24                     ` Fabio Baltieri
2012-08-01 12:30                       ` Marc Kleine-Budde
2012-08-01 21:02                   ` Marc Kleine-Budde
2012-08-01 11:59                 ` [PATCH can-next v5 1/2] can: add tx/rx " Marc Kleine-Budde
2012-08-01 12:06                 ` Oliver Hartkopp
2012-08-01 12:18                   ` Marc Kleine-Budde
2012-08-01 18:21                     ` [PATCH can-next v6] " Fabio Baltieri
2012-08-01 21:00                       ` Marc Kleine-Budde
2012-08-01 22:38                         ` Fabio Baltieri
2012-08-01 21:05                       ` Oliver Hartkopp
2012-08-24  5:10                       ` Kurt Van Dijck
2012-08-24 11:28                         ` Marc Kleine-Budde
2012-08-24 12:42                           ` Kurt Van Dijck
2012-08-24 12:42                             ` Kurt Van Dijck
2012-08-24 22:01                             ` Fabio Baltieri
2012-08-25 20:25                               ` Kurt Van Dijck
2012-09-03 12:40                               ` Marc Kleine-Budde
2012-09-03 18:13                                 ` Kurt Van Dijck
2012-09-03 18:29                                   ` Fabio Baltieri
2012-09-03 20:54                                     ` Oliver Hartkopp
2012-09-04  7:11                                       ` Kurt Van Dijck
2012-09-04  9:29                                         ` [PATCH] can: rename LED trigger name on netdev renames Kurt Van Dijck
2012-09-06 18:59                                           ` Fabio Baltieri
2012-09-06 19:31                                             ` Oliver Hartkopp
2012-09-06 20:46                                               ` Fabio Baltieri
2012-09-07  7:19                                                 ` Kurt Van Dijck
2012-09-09 16:17                                                   ` [PATCH v2] " Fabio Baltieri
2012-09-10 14:25                                                     ` [PATCH] can: export a safe netdev_priv wrapper for candev Kurt Van Dijck
2012-09-10 14:25                                                       ` Kurt Van Dijck
2012-09-10 18:22                                                       ` Oliver Hartkopp
2012-09-10 18:29                                                       ` Fabio Baltieri
2012-09-10 19:55                                                         ` [PATCH v2] " Kurt Van Dijck
2012-09-10 14:28                                                     ` [PATCH v3] can: rename LED trigger name on netdev renames Kurt Van Dijck
2012-09-10 14:28                                                       ` Kurt Van Dijck
2012-09-10 18:25                                                       ` Oliver Hartkopp
2012-09-10 18:40                                                         ` Fabio Baltieri
2012-09-10 19:01                                                           ` Oliver Hartkopp
2012-09-10 20:08                                                             ` Kurt Van Dijck
2012-09-11  5:42                                                               ` Oliver Hartkopp
2012-09-11  7:13                                                                 ` Fabio Baltieri
2012-09-12  7:22                                                                   ` Kurt Van Dijck
2012-09-12  7:22                                                                     ` Kurt Van Dijck
2012-09-11  8:05                                                               ` Kurt Van Dijck
2012-09-10 20:06                                                           ` [PATCH v4] " Kurt Van Dijck
2012-09-11 21:04                                                             ` Fabio Baltieri
2012-09-04 20:15                                         ` [PATCH can-next v6] can: add tx/rx LED trigger support Fabio Baltieri
2012-09-06 10:33                                           ` Kurt Van Dijck
2012-09-06 11:17                                             ` Fabio Baltieri
2012-09-06 15:11                                               ` Kurt Van Dijck
2012-09-06 20:57                                                 ` Fabio Baltieri
2012-09-07  7:04                                                   ` Kurt Van Dijck
2012-09-07 18:59                                                     ` Fabio Baltieri
2012-07-31  8:46 ` [PATCH can-next v3 1/2] " Wolfgang Grandegger
2012-07-31 10:12   ` Marc Kleine-Budde
2012-07-31 11:55     ` Fabio Baltieri [this message]
2012-07-31 12:14   ` Fabio Baltieri

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120731115539.GA30417@gmail.com \
    --to=fabio.baltieri@gmail.com \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=socketcan@hartkopp.net \
    --cc=wg@grandegger.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.