aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2010-05-24 03:14:10 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-24 03:14:10 -0400
commit8286274284e15b11b0f531b6ceeef21fbe00a8dd (patch)
tree1e63dabdbc60f3409710cf58ed351e2a1f262941
parentf845172531fb7410c7fb7780b1a6e51ee6df7d52 (diff)
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,
526 struct sk_buff *skb; 526 struct sk_buff *skb;
527 int err; 527 int err;
528 528
529 sock_update_classid(sk);
530
529 /* Under a page? Don't bother with paged skb. */ 531 /* Under a page? Don't bother with paged skb. */
530 if (prepad + len < PAGE_SIZE || !linear) 532 if (prepad + len < PAGE_SIZE || !linear)
531 linear = len; 533 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)
1064 if (classid && classid != sk->sk_classid) 1064 if (classid && classid != sk->sk_classid)
1065 sk->sk_classid = classid; 1065 sk->sk_classid = classid;
1066} 1066}
1067EXPORT_SYMBOL(sock_update_classid);
1067#endif 1068#endif
1068 1069
1069/** 1070/**