aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_main.c
diff options
context:
space:
mode:
authorJay Vosburgh <fubar@us.ibm.com>2008-01-29 21:07:45 -0500
committerDavid S. Miller <davem@davemloft.net>2008-02-03 07:28:12 -0500
commit4fe4763cd8cacd81d892193efb48b99c99c15323 (patch)
tree5eb58e95faa8cfc04a0d81993dcd99b5ecd93a98 /drivers/net/bonding/bond_main.c
parent80ee5ad23150f1f3fe8d35728e860850ccea44da (diff)
bonding: fix NULL pointer deref in startup processing
Fix the "are we creating a duplicate" check to not compare the name if the name is NULL (meaning that the system should select a name). Bug reported by Benny Amorsen <benny+usenet@amorsen.dk>. Signed-off-by: Jay Vosburgh <fubar@us.ibm.com> Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding/bond_main.c')
-rw-r--r--drivers/net/bonding/bond_main.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 65c7ebafaacd..81b45740ed77 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -4896,14 +4896,16 @@ int bond_create(char *name, struct bond_params *params, struct bonding **newbond
4896 down_write(&bonding_rwsem); 4896 down_write(&bonding_rwsem);
4897 4897
4898 /* Check to see if the bond already exists. */ 4898 /* Check to see if the bond already exists. */
4899 list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) 4899 if (name) {
4900 if (strnicmp(bond->dev->name, name, IFNAMSIZ) == 0) { 4900 list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list)
4901 printk(KERN_ERR DRV_NAME 4901 if (strnicmp(bond->dev->name, name, IFNAMSIZ) == 0) {
4902 printk(KERN_ERR DRV_NAME
4902 ": cannot add bond %s; it already exists\n", 4903 ": cannot add bond %s; it already exists\n",
4903 name); 4904 name);
4904 res = -EPERM; 4905 res = -EPERM;
4905 goto out_rtnl; 4906 goto out_rtnl;
4906 } 4907 }
4908 }
4907 4909
4908 bond_dev = alloc_netdev(sizeof(struct bonding), name ? name : "", 4910 bond_dev = alloc_netdev(sizeof(struct bonding), name ? name : "",
4909 ether_setup); 4911 ether_setup);