Hello,
a few drivers used ETHTOOL_BUSINFO_LEN as size of driver and version of
ethtoo_drvinfo struct. But these are not defined as this.
So define it (for others) and remove usage of those I found.
Also uses strlcpy() instead of strncpy() which could be wrong by 1, I
believe.
Patch is against today's BK.
Michal
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2005/01/18 00:24:07+01:00 [EMAIL PROTECTED]
# [NetDrivers] Stop using ETHTOOL_BUSINFO_LEN as size of driver and version members of ethtoo_drvinfo struct.
# natsemi, sk98lin, catc, rtl8150: Remove silent usage ETHTOOL_BUSINFO_LEN as size of driver and version members of ethtool_drvinfo.
# natsemi, catc, rtl8150: use strlcpy() instead of strncpy() for copiing members above.
#
# Signed-off-by: Michal Rokos <[EMAIL PROTECTED]>
#
# include/linux/ethtool.h
# 2005/01/18 00:23:28+01:00 [EMAIL PROTECTED] +3 -3
# Quarantee that size of driver, version, and fw_version of struct ethtool_drvinfo() is the same as ETHTOOL_BUSINFO_LEN.
#
# drivers/usb/net/rtl8150.c
# 2005/01/18 00:23:28+01:00 [EMAIL PROTECTED] +3 -3
# Remove usage of ETHTOOL_BUSINFO_LEN for size of driver and version members of struct ethtool_drvinfo since it's not guaranteed by <linux/ethtool.h>.
# Use strlcpy() instead of strncpy() to make it safe.
#
# drivers/usb/net/catc.c
# 2005/01/18 00:23:28+01:00 [EMAIL PROTECTED] +3 -3
# Remove usage of ETHTOOL_BUSINFO_LEN for size of driver and version members of struct ethtool_drvinfo since it's not guaranteed by <linux/ethtool.h>.
# Use strlcpy() instead of strncpy() to make it safe.
#
# drivers/net/sk98lin/skethtool.c
# 2005/01/18 00:23:28+01:00 [EMAIL PROTECTED] +1 -1
# Remove usage of ETHTOOL_BUSINFO_LEN for size of driver and version members of struct ethtool_drvinfo since it's not guaranteed by <linux/ethtool.h>.
#
# drivers/net/natsemi.c
# 2005/01/18 00:23:27+01:00 [EMAIL PROTECTED] +3 -3
# Remove usage of ETHTOOL_BUSINFO_LEN for size of driver and version members of struct ethtool_drvinfo since it's not guaranteed by <linux/ethtool.h>.
# Use strlcpy() instead of strncpy() to make it safe.
#
diff -Nru a/drivers/net/natsemi.c b/drivers/net/natsemi.c
--- a/drivers/net/natsemi.c 2005-01-18 23:37:33 +01:00
+++ b/drivers/net/natsemi.c 2005-01-18 23:37:33 +01:00
@@ -2487,9 +2487,9 @@
static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
{
struct netdev_private *np = netdev_priv(dev);
- strncpy(info->driver, DRV_NAME, ETHTOOL_BUSINFO_LEN);
- strncpy(info->version, DRV_VERSION, ETHTOOL_BUSINFO_LEN);
- strncpy(info->bus_info, pci_name(np->pci_dev), ETHTOOL_BUSINFO_LEN);
+ strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
+ strlcpy(info->version, DRV_VERSION, sizeof(info->version));
+ strlcpy(info->bus_info, pci_name(np->pci_dev), sizeof(info->bus_info));
}
static int get_regs_len(struct net_device *dev)
diff -Nru a/drivers/net/sk98lin/skethtool.c b/drivers/net/sk98lin/skethtool.c
--- a/drivers/net/sk98lin/skethtool.c 2005-01-18 23:37:33 +01:00
+++ b/drivers/net/sk98lin/skethtool.c 2005-01-18 23:37:33 +01:00
@@ -257,7 +257,7 @@
strlcpy(info->driver, DRIVER_FILE_NAME, sizeof(info->driver));
strcpy(info->version, vers);
strcpy(info->fw_version, "N/A");
- strlcpy(info->bus_info, pAC->PciDev->slot_name, ETHTOOL_BUSINFO_LEN);
+ strlcpy(info->bus_info, pAC->PciDev->slot_name, sizeof(info->bus_info));
}
/*
diff -Nru a/drivers/usb/net/catc.c b/drivers/usb/net/catc.c
--- a/drivers/usb/net/catc.c 2005-01-18 23:37:33 +01:00
+++ b/drivers/usb/net/catc.c 2005-01-18 23:37:33 +01:00
@@ -667,9 +667,9 @@
void catc_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
{
struct catc *catc = netdev_priv(dev);
- strncpy(info->driver, driver_name, ETHTOOL_BUSINFO_LEN);
- strncpy(info->version, DRIVER_VERSION, ETHTOOL_BUSINFO_LEN);
- usb_make_path (catc->usbdev, info->bus_info, sizeof info->bus_info);
+ strlcpy(info->driver, driver_name, sizeof(info->driver));
+ strlcpy(info->version, DRIVER_VERSION, sizeof(info->version));
+ usb_make_path(catc->usbdev, info->bus_info, sizeof(info->bus_info));
}
static int catc_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
diff -Nru a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c
--- a/drivers/usb/net/rtl8150.c 2005-01-18 23:37:33 +01:00
+++ b/drivers/usb/net/rtl8150.c 2005-01-18 23:37:33 +01:00
@@ -762,9 +762,9 @@
{
rtl8150_t *dev = netdev_priv(netdev);
- strncpy(info->driver, driver_name, ETHTOOL_BUSINFO_LEN);
- strncpy(info->version, DRIVER_VERSION, ETHTOOL_BUSINFO_LEN);
- usb_make_path(dev->udev, info->bus_info, sizeof info->bus_info);
+ strlcpy(info->driver, driver_name, sizeof(info->driver));
+ strlcpy(info->version, DRIVER_VERSION, sizeof(info->version));
+ usb_make_path(dev->udev, info->bus_info, sizeof(info->bus_info));
}
static int rtl8150_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
diff -Nru a/include/linux/ethtool.h b/include/linux/ethtool.h
--- a/include/linux/ethtool.h 2005-01-18 23:37:33 +01:00
+++ b/include/linux/ethtool.h 2005-01-18 23:37:33 +01:00
@@ -33,9 +33,9 @@
/* these strings are set to whatever the driver author decides... */
struct ethtool_drvinfo {
u32 cmd;
- char driver[32]; /* driver short name, "tulip", "eepro100" */
- char version[32]; /* driver version string */
- char fw_version[32]; /* firmware version string, if applicable */
+ char driver[ETHTOOL_BUSINFO_LEN]; /* driver short name, "tulip", "eepro100" */
+ char version[ETHTOOL_BUSINFO_LEN]; /* driver version string */
+ char fw_version[ETHTOOL_BUSINFO_LEN];/* firmware version string, if applicable */
char bus_info[ETHTOOL_BUSINFO_LEN]; /* Bus info for this IF. */
/* For PCI devices, use pci_name(pci_dev). */
char reserved1[32];