Subject: tun: Hold rtnl_lock() while changing dev->features
Date: Fri, 13 Jun 2008 14:27:39 +0100
From: Mark McLoughlin <markmc@redhat.com>

Calling netdev_features_change() without the rtnl
semaphore held results in a RTNL_ASSERT() oops in
inetdev_event()

(Fixes misc:tun-gso-csum-features.patch)

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
 drivers/net/tun.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/net/tun.c b/drivers/net/tun.c
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -733,7 +733,13 @@ static int tun_chr_ioctl(struct inode *i
 #endif
 
 	case TUNSETFEATURES:
-		return set_features(tun->dev, arg);
+	{
+		int ret;
+		rtnl_lock();
+		ret = set_features(tun->dev, arg);
+		rtnl_unlock();
+		return ret;
+	}
 
 	case SIOCGIFFLAGS:
 		ifr.ifr_flags = tun->if_flags;
