Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 58904
b: refs/heads/master
c: 2ae0bf6
h: refs/heads/master
v: v3
  • Loading branch information
Patrick McHardy authored and David S. Miller committed Jul 11, 2007
1 parent f15ed61 commit b8885cb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e89fe42cd03c8fd3686df82d8390a235717a66de
refs/heads/master: 2ae0bf69b716d07126f0a9c17fcc2d76da172cb6
32 changes: 14 additions & 18 deletions trunk/net/8021q/vlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -493,25 +493,26 @@ static int register_vlan_dev(struct net_device *dev)
}

/* Attach a VLAN device to a mac address (ie Ethernet Card).
* Returns the device that was created, or NULL if there was
* an error of some kind.
* Returns 0 if the device was created or a negative error code otherwise.
*/
static struct net_device *register_vlan_device(struct net_device *real_dev,
unsigned short VLAN_ID)
static int register_vlan_device(struct net_device *real_dev,
unsigned short VLAN_ID)
{
struct net_device *new_dev;
char name[IFNAMSIZ];
int err;

#ifdef VLAN_DEBUG
printk(VLAN_DBG "%s: if_name -:%s:- vid: %i\n",
__FUNCTION__, eth_IF_name, VLAN_ID);
#endif

if (VLAN_ID >= VLAN_VID_MASK)
goto out_ret_null;
return -ERANGE;

if (vlan_check_real_dev(real_dev, VLAN_ID) < 0)
goto out_ret_null;
err = vlan_check_real_dev(real_dev, VLAN_ID);
if (err < 0)
return err;

/* Gotta set up the fields for the device. */
#ifdef VLAN_DEBUG
Expand Down Expand Up @@ -547,7 +548,7 @@ static struct net_device *register_vlan_device(struct net_device *real_dev,
vlan_setup);

if (new_dev == NULL)
goto out_ret_null;
return -ENOBUFS;

/* need 4 bytes for extra VLAN header info,
* hope the underlying device can handle it.
Expand All @@ -566,21 +567,20 @@ static struct net_device *register_vlan_device(struct net_device *real_dev,
VLAN_DEV_INFO(new_dev)->dent = NULL;
VLAN_DEV_INFO(new_dev)->flags = 1;

if (register_vlan_dev(new_dev) < 0)
err = register_vlan_dev(new_dev);
if (err < 0)
goto out_free_newdev;

/* Account for reference in struct vlan_dev_info */
dev_hold(real_dev);
#ifdef VLAN_DEBUG
printk(VLAN_DBG "Allocated new device successfully, returning.\n");
#endif
return new_dev;
return 0;

out_free_newdev:
free_netdev(new_dev);

out_ret_null:
return NULL;
return err;
}

static int vlan_device_event(struct notifier_block *unused, unsigned long event, void *ptr)
Expand Down Expand Up @@ -753,11 +753,7 @@ static int vlan_ioctl_handler(void __user *arg)
err = -EPERM;
if (!capable(CAP_NET_ADMIN))
break;
if (register_vlan_device(dev, args.u.VID)) {
err = 0;
} else {
err = -EINVAL;
}
err = register_vlan_device(dev, args.u.VID);
break;

case DEL_VLAN_CMD:
Expand Down

0 comments on commit b8885cb

Please sign in to comment.