In bond_main.c: int bond_create(char *name, struct bond_params *params, struct bonding **newbond) { ... /* Check to see if the bond already exists. */ list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) if (strnicmp(bond->dev->name, name, IFNAMSIZ) == 0) { printk(KERN_ERR DRV_NAME ": cannot add bond %s; it already exists\n",
If 'name' is null we get a null dereference in strnicmp() The code was added in 2.6.24. Signed-off-by: Chuck Ebbert <[EMAIL PROTECTED]> --- (not even compile tested) drivers/net/bonding/bond_main.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) --- linux-2.6.24.noarch.orig/drivers/net/bonding/bond_main.c +++ linux-2.6.24.noarch/drivers/net/bonding/bond_main.c @@ -4882,15 +4882,17 @@ int bond_create(char *name, struct bond_ rtnl_lock(); down_write(&bonding_rwsem); - /* Check to see if the bond already exists. */ - list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) - if (strnicmp(bond->dev->name, name, IFNAMSIZ) == 0) { - printk(KERN_ERR DRV_NAME - ": cannot add bond %s; it already exists\n", - name); - res = -EPERM; - goto out_rtnl; - } + if (name) { + /* Check to see if the bond already exists. */ + list_for_each_entry_safe(bond, nxt, &bond_dev_list, bond_list) + if (strnicmp(bond->dev->name, name, IFNAMSIZ) == 0) { + printk(KERN_ERR DRV_NAME + ": cannot add bond %s; it already exists\n", + name); + res = -EPERM; + goto out_rtnl; + } + } bond_dev = alloc_netdev(sizeof(struct bonding), name ? name : "", ether_setup); -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html