From 7d4eae017ccc5b98815b0fd6e07a66c7b13fb869 Mon Sep 17 00:00:00 2001 From: Jiri Pirko Date: Wed, 10 Mar 2010 10:30:19 +0000 Subject: [PATCH] --- yaml --- r: 193617 b: refs/heads/master c: 1c01fe14a87332cc88266fbd6e598319322eb96f h: refs/heads/master i: 193615: 4ab0fdd461e540025a5ffa6041548e282f657faf v: v3 --- [refs] | 2 +- trunk/drivers/net/macvlan.c | 3 +++ trunk/net/8021q/vlan.c | 4 ++++ trunk/net/bridge/br_notify.c | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 006dff4660b5..2e321659daad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3ca5b4042ecae5e73c59de62e4ac0db31c10e0f8 +refs/heads/master: 1c01fe14a87332cc88266fbd6e598319322eb96f diff --git a/trunk/drivers/net/macvlan.c b/trunk/drivers/net/macvlan.c index 40faa368b07a..445e73c343ba 100644 --- a/trunk/drivers/net/macvlan.c +++ b/trunk/drivers/net/macvlan.c @@ -748,6 +748,9 @@ static int macvlan_device_event(struct notifier_block *unused, list_for_each_entry_safe(vlan, next, &port->vlans, list) vlan->dev->rtnl_link_ops->dellink(vlan->dev, NULL); break; + case NETDEV_PRE_TYPE_CHANGE: + /* Forbid underlaying device to change its type. */ + return NOTIFY_BAD; } return NOTIFY_DONE; } diff --git a/trunk/net/8021q/vlan.c b/trunk/net/8021q/vlan.c index 453512266ea1..c39a5f41169c 100644 --- a/trunk/net/8021q/vlan.c +++ b/trunk/net/8021q/vlan.c @@ -530,6 +530,10 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event, } unregister_netdevice_many(&list); break; + + case NETDEV_PRE_TYPE_CHANGE: + /* Forbid underlaying device to change its type. */ + return NOTIFY_BAD; } out: diff --git a/trunk/net/bridge/br_notify.c b/trunk/net/bridge/br_notify.c index 763a3ec292e5..1413b72acc7f 100644 --- a/trunk/net/bridge/br_notify.c +++ b/trunk/net/bridge/br_notify.c @@ -82,6 +82,10 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v case NETDEV_UNREGISTER: br_del_if(br, dev); break; + + case NETDEV_PRE_TYPE_CHANGE: + /* Forbid underlaying device to change its type. */ + return NOTIFY_BAD; } /* Events that may cause spanning tree to refresh */