diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2010-05-24 03:14:10 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-24 03:14:10 -0400 |
commit | 8286274284e15b11b0f531b6ceeef21fbe00a8dd (patch) | |
tree | 1e63dabdbc60f3409710cf58ed351e2a1f262941 | |
parent | f845172531fb7410c7fb7780b1a6e51ee6df7d52 (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.c | 2 | ||||
-rw-r--r-- | net/core/sock.c | 1 |
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 | } |
1067 | EXPORT_SYMBOL(sock_update_classid); | ||
1067 | #endif | 1068 | #endif |
1068 | 1069 | ||
1069 | /** | 1070 | /** |