net: Rework netdev_drivername() to avoid warning.

This interface uses a temporary buffer, but for no real reason.
And now can generate warnings like:

net/sched/sch_generic.c: In function dev_watchdog
net/sched/sch_generic.c:254:10: warning: unused variable drivername

Just return driver->name directly or "".

Reported-by: Connor Hansen <cmdkhh@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2011-06-06 16:41:33 -07:00
parent 5a079c305a
commit 3019de124b
3 changed files with 7 additions and 14 deletions

View file

@ -2555,7 +2555,7 @@ extern void netdev_class_remove_file(struct class_attribute *class_attr);
extern struct kobj_ns_type_operations net_ns_type_operations; extern struct kobj_ns_type_operations net_ns_type_operations;
extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len); extern const char *netdev_drivername(const struct net_device *dev);
extern void linkwatch_run_queue(void); extern void linkwatch_run_queue(void);

View file

@ -6264,29 +6264,23 @@ static int __net_init netdev_init(struct net *net)
/** /**
* netdev_drivername - network driver for the device * netdev_drivername - network driver for the device
* @dev: network device * @dev: network device
* @buffer: buffer for resulting name
* @len: size of buffer
* *
* Determine network driver for device. * Determine network driver for device.
*/ */
char *netdev_drivername(const struct net_device *dev, char *buffer, int len) const char *netdev_drivername(const struct net_device *dev)
{ {
const struct device_driver *driver; const struct device_driver *driver;
const struct device *parent; const struct device *parent;
const char *empty = "";
if (len <= 0 || !buffer)
return buffer;
buffer[0] = 0;
parent = dev->dev.parent; parent = dev->dev.parent;
if (!parent) if (!parent)
return buffer; return empty;
driver = parent->driver; driver = parent->driver;
if (driver && driver->name) if (driver && driver->name)
strlcpy(buffer, driver->name, len); return driver->name;
return buffer; return empty;
} }
static int __netdev_printk(const char *level, const struct net_device *dev, static int __netdev_printk(const char *level, const struct net_device *dev,

View file

@ -251,9 +251,8 @@ static void dev_watchdog(unsigned long arg)
} }
if (some_queue_timedout) { if (some_queue_timedout) {
char drivername[64];
WARN_ONCE(1, KERN_INFO "NETDEV WATCHDOG: %s (%s): transmit queue %u timed out\n", WARN_ONCE(1, KERN_INFO "NETDEV WATCHDOG: %s (%s): transmit queue %u timed out\n",
dev->name, netdev_drivername(dev, drivername, 64), i); dev->name, netdev_drivername(dev), i);
dev->netdev_ops->ndo_tx_timeout(dev); dev->netdev_ops->ndo_tx_timeout(dev);
} }
if (!mod_timer(&dev->watchdog_timer, if (!mod_timer(&dev->watchdog_timer,