* [PATCH net-next 7/8] macvlan: Check return of dev_set_allmulti
@ 2008-06-20 0:55 Wang Chen
2008-06-20 9:45 ` Patrick McHardy
0 siblings, 1 reply; 4+ messages in thread
From: Wang Chen @ 2008-06-20 0:55 UTC (permalink / raw)
To: David S. Miller; +Cc: Jeff Garzik, NETDEV, Patrick McHardy
allmulti might overflow.
Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
dev_set_promiscuity/allmulti return error number if overflow happened.
Here, we check the positive increment for allmulti to get error return.
Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com>
---
drivers/net/macvlan.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index c36a03a..b0ed18f 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -190,8 +190,13 @@ static int macvlan_open(struct net_device *dev)
err = dev_unicast_add(lowerdev, dev->dev_addr, ETH_ALEN);
if (err < 0)
return err;
- if (dev->flags & IFF_ALLMULTI)
- dev_set_allmulti(lowerdev, 1);
+ if (dev->flags & IFF_ALLMULTI) {
+ err = dev_set_allmulti(lowerdev, 1);
+ if (err < 0) {
+ dev_unicast_delete(lowerdev, dev->dev_addr, ETH_ALEN);
+ return err;
+ }
+ }
hlist_add_head_rcu(&vlan->hlist, &port->vlan_hash[dev->dev_addr[5]]);
return 0;
--
1.5.3.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next 7/8] macvlan: Check return of dev_set_allmulti
2008-06-20 0:55 [PATCH net-next 7/8] macvlan: Check return of dev_set_allmulti Wang Chen
@ 2008-06-20 9:45 ` Patrick McHardy
2008-06-20 15:08 ` Wang Chen
0 siblings, 1 reply; 4+ messages in thread
From: Patrick McHardy @ 2008-06-20 9:45 UTC (permalink / raw)
To: Wang Chen; +Cc: David S. Miller, Jeff Garzik, NETDEV
Wang Chen wrote:
> allmulti might overflow.
> Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
> dev_set_promiscuity/allmulti return error number if overflow happened.
>
> Here, we check the positive increment for allmulti to get error return.
>
> Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com>
> ---
> drivers/net/macvlan.c | 9 +++++++--
> 1 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
> index c36a03a..b0ed18f 100644
> --- a/drivers/net/macvlan.c
> +++ b/drivers/net/macvlan.c
> @@ -190,8 +190,13 @@ static int macvlan_open(struct net_device *dev)
> err = dev_unicast_add(lowerdev, dev->dev_addr, ETH_ALEN);
> if (err < 0)
> return err;
> - if (dev->flags & IFF_ALLMULTI)
> - dev_set_allmulti(lowerdev, 1);
> + if (dev->flags & IFF_ALLMULTI) {
> + err = dev_set_allmulti(lowerdev, 1);
> + if (err < 0) {
> + dev_unicast_delete(lowerdev, dev->dev_addr, ETH_ALEN);
> + return err;
> + }
> + }
Please change this to use gotos for rollback on error.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next 7/8] macvlan: Check return of dev_set_allmulti
2008-06-20 9:45 ` Patrick McHardy
@ 2008-06-20 15:08 ` Wang Chen
2008-06-24 11:38 ` Patrick McHardy
0 siblings, 1 reply; 4+ messages in thread
From: Wang Chen @ 2008-06-20 15:08 UTC (permalink / raw)
To: Patrick McHardy; +Cc: David S. Miller, Jeff Garzik, NETDEV
Patrick McHardy said the following on 2008-6-20 17:45:
> Please change this to use gotos for rollback on error.
>
allmulti might overflow.
Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
dev_set_promiscuity/allmulti return error number if overflow happened.
Here, we check the positive increment for allmulti to get error return.
Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com>
---
drivers/net/macvlan.c | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index c36a03a..a857330 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -189,12 +189,20 @@ static int macvlan_open(struct net_device *dev)
err = dev_unicast_add(lowerdev, dev->dev_addr, ETH_ALEN);
if (err < 0)
- return err;
- if (dev->flags & IFF_ALLMULTI)
- dev_set_allmulti(lowerdev, 1);
+ goto out;
+ if (dev->flags & IFF_ALLMULTI) {
+ err = dev_set_allmulti(lowerdev, 1);
+ if (err < 0)
+ goto del_unicast;
+ }
hlist_add_head_rcu(&vlan->hlist, &port->vlan_hash[dev->dev_addr[5]]);
return 0;
+
+del_unicast:
+ dev_unicast_delete(lowerdev, dev->dev_addr, ETH_ALEN);
+out:
+ return err;
}
static int macvlan_stop(struct net_device *dev)
--
1.5.3.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next 7/8] macvlan: Check return of dev_set_allmulti
2008-06-20 15:08 ` Wang Chen
@ 2008-06-24 11:38 ` Patrick McHardy
0 siblings, 0 replies; 4+ messages in thread
From: Patrick McHardy @ 2008-06-24 11:38 UTC (permalink / raw)
To: Wang Chen; +Cc: David S. Miller, Jeff Garzik, NETDEV
Wang Chen wrote:
> Patrick McHardy said the following on 2008-6-20 17:45:
>> Please change this to use gotos for rollback on error.
>>
>
> allmulti might overflow.
> Commit: "netdevice: Fix promiscuity and allmulti overflow" in net-next makes
> dev_set_promiscuity/allmulti return error number if overflow happened.
>
> Here, we check the positive increment for allmulti to get error return.
>
> Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com>
Acked-by: Patrick McHardy <kaber@trash.net>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-06-24 11:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-20 0:55 [PATCH net-next 7/8] macvlan: Check return of dev_set_allmulti Wang Chen
2008-06-20 9:45 ` Patrick McHardy
2008-06-20 15:08 ` Wang Chen
2008-06-24 11:38 ` Patrick McHardy
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).