From: Patrick McHardy <kaber@trash.net>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, Patrick McHardy <kaber@trash.net>
Subject: [VLAN 14/18]: Return proper error codes in register_vlan_device
Date: Wed, 13 Jun 2007 18:51:01 +0200 (MEST) [thread overview]
Message-ID: <20070613165058.7780.87081.sendpatchset@localhost.localdomain> (raw)
In-Reply-To: <20070613165039.7780.15855.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 5924a55528b3a6897ea49f4af9fa7dcefc50fd57
tree 5fe3152d604de9f44efd614207ada20e13ef2d3c
parent 0bd5a42a938a42aa15a4e9ac01777d74653e7c8d
author Patrick McHardy <kaber@trash.net> Wed, 06 Jun 2007 14:46:52 +0200
committer Patrick McHardy <kaber@trash.net> Wed, 13 Jun 2007 18:10:32 +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 e68b503..5801993 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -493,14 +493,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",
@@ -508,10 +508,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
@@ -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.
@@ -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:
next prev parent reply other threads:[~2007-06-13 16:51 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-13 16:50 [NET 00/18]: Netlink link creation API + driver conversions Patrick McHardy
2007-06-13 16:50 ` [NET 01/18]: Mark struct net_device * argument to netdev_priv const Patrick McHardy
2007-06-13 16:50 ` [RTNETLINK 02/18]: Split up rtnl_setlink Patrick McHardy
2007-06-13 16:50 ` [RTNETLINK 03/18]: Link creation API Patrick McHardy
2007-06-13 16:50 ` [DUMMY 04/18]: Use dev->stats Patrick McHardy
2007-06-13 16:50 ` [DUMMY 05/18]: Keep dummy devices on list Patrick McHardy
2007-06-13 16:50 ` [DUMMY 06/18]: Use rtnl_link API Patrick McHardy
2007-06-13 16:50 ` [IFB 07/18]: Keep ifb devices on list Patrick McHardy
2007-06-13 16:50 ` [IFB 08/18]: Use rtnl_link API Patrick McHardy
2007-06-13 16:50 ` [VLAN 09/18]: Convert name-based configuration functions to struct netdevice * Patrick McHardy
2007-06-13 16:50 ` [VLAN 10/18]: Move some device intialization code to dev->init callback Patrick McHardy
2007-06-13 16:50 ` [VLAN 11/18]: Move vlan_group allocation to seperate function Patrick McHardy
2007-06-13 16:50 ` [VLAN 12/18]: Split up device checks Patrick McHardy
2007-06-13 16:51 ` [VLAN 13/18]: Move device registation to seperate function Patrick McHardy
2007-06-13 16:51 ` Patrick McHardy [this message]
2007-06-13 16:51 ` [VLAN 15/18]: Use 32 bit value for skb->priority mapping Patrick McHardy
2007-06-13 16:51 ` [VLAN 16/18]: Keep track of number of QoS mappings Patrick McHardy
2007-06-13 16:51 ` [VLAN 17/18]: Introduce symbolic constants for flag values Patrick McHardy
2007-06-13 16:51 ` [VLAN 18/18]: Use rtnl_link API Patrick McHardy
2007-06-13 19:51 ` [NET 00/18]: Netlink link creation API + driver conversions David Miller
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=20070613165058.7780.87081.sendpatchset@localhost.localdomain \
--to=kaber@trash.net \
--cc=davem@davemloft.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).