netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: netdev@vger.kernel.org
Cc: Patrick McHardy <kaber@trash.net>
Subject: [RFC VLAN 07/10]: Return proper error codes in register_vlan_device
Date: Tue,  5 Jun 2007 16:37:01 +0200 (MEST)	[thread overview]
Message-ID: <20070605143700.23717.47942.sendpatchset@localhost.localdomain> (raw)
In-Reply-To: <20070605143650.23717.91261.sendpatchset@localhost.localdomain>

[VLAN]: Return proper error codes in register_vlan_device

The returned device is unused, return proper error codes instead and avoid
having the ioctl handler guess the error.

Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit f2eb0828c4cfaf4d4aed225b55ca65b052109657
tree 967dc78c7ed8931a62bdaaa0e57304e75bfe91b9
parent 312dc0ee04bed170ad8091f777fcc2108105ca2c
author Patrick McHardy <kaber@trash.net> Tue, 05 Jun 2007 16:33:45 +0200
committer Patrick McHardy <kaber@trash.net> Tue, 05 Jun 2007 16:33:45 +0200

 net/8021q/vlan.c |   32 ++++++++++++++------------------
 1 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 0fa071d..03b67b9 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -498,14 +498,14 @@ out_free_group:
 }
 
 /*  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",
@@ -513,10 +513,11 @@ static struct net_device *register_vlan_device(struct net_device *real_dev,
 #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
@@ -552,7 +553,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;
 
 #ifdef VLAN_DEBUG
 	printk(VLAN_DBG "Allocated new name -:%s:-\n", new_dev->name);
@@ -566,7 +567,8 @@ 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 */
@@ -574,13 +576,11 @@ static struct net_device *register_vlan_device(struct net_device *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)
@@ -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:

  parent reply	other threads:[~2007-06-05 14:37 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-05 14:36 [RFC VLAN 00/10]: VLAN netlink support try 2 Patrick McHardy
2007-06-05 14:36 ` [RFC VLAN 01/10]: Fix off-by-ones in VLAN ID checks Patrick McHardy
2007-06-05 16:16   ` Ben Greear
2007-06-05 18:16     ` Patrick McHardy
2007-06-05 14:36 ` [RFC VLAN 02/10]: Convert name-based configuration functions to struct netdevice * Patrick McHardy
2007-06-05 14:36 ` [RFC VLAN 03/10]: Move some device intialization code to dev->init callback Patrick McHardy
2007-06-05 14:36 ` [RFC VLAN 04/10]: Move vlan_group allocation to seperate function Patrick McHardy
2007-06-05 14:36 ` [RFC VLAN 05/10]: Split up device checks Patrick McHardy
2007-06-05 14:36 ` [RFC VLAN 06/10]: Move device registation to seperate function Patrick McHardy
2007-06-05 14:37 ` Patrick McHardy [this message]
2007-06-05 14:37 ` [RFC VLAN 08/10]: Use 32 bit value for skb->priority mapping Patrick McHardy
2007-06-05 14:37 ` [RFC VLAN 09/10]: Keep track of number of QoS mappings Patrick McHardy
2007-06-05 14:37 ` [RFC VLAN 10/10]: Use rtnl_link API Patrick McHardy
2007-06-05 21:31   ` Ben Greear
2007-06-05 21:58     ` Patrick McHardy
2007-06-05 22:03       ` Ben Greear
2007-06-05 16:25 ` [RFC VLAN 00/10]: VLAN netlink support try 2 Ben Greear
2007-06-05 18:28   ` Patrick McHardy
2007-06-05 20:08     ` Ben Greear
2007-06-05 21:12       ` Patrick McHardy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070605143700.23717.47942.sendpatchset@localhost.localdomain \
    --to=kaber@trash.net \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).