aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2010-05-24 00:14:10 -0700
committerDavid S. Miller <davem@davemloft.net>2010-05-24 00:14:10 -0700
commit8286274284e15b11b0f531b6ceeef21fbe00a8dd (patch)
tree1e63dabdbc60f3409710cf58ed351e2a1f262941
parentcls_cgroup: Store classid in struct sock (diff)
downloadlinux-dev-8286274284e15b11b0f531b6ceeef21fbe00a8dd.tar.xz
linux-dev-8286274284e15b11b0f531b6ceeef21fbe00a8dd.zip
tun: Update classid on packet injection
This patch makes tun update its socket classid every time we inject a packet into the network stack. This is so that any updates made by the admin to the process writing packets to tun is effected. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/tun.c2
-rw-r--r--net/core/sock.c1
2 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 97b25533e5fb..8793c2bf7f15 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -526,6 +526,8 @@ static inline struct sk_buff *tun_alloc_skb(struct tun_struct *tun,
struct sk_buff *skb;
int err;
+ sock_update_classid(sk);
+
/* Under a page? Don't bother with paged skb. */
if (prepad + len < PAGE_SIZE || !linear)
linear = len;
diff --git a/net/core/sock.c b/net/core/sock.c
index a05ae7f9771e..37fe9b6adade 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1064,6 +1064,7 @@ void sock_update_classid(struct sock *sk)
if (classid && classid != sk->sk_classid)
sk->sk_classid = classid;
}
+EXPORT_SYMBOL(sock_update_classid);
#endif
/**