diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2010-05-24 00:14:10 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-05-24 00:14:10 -0700 |
commit | 8286274284e15b11b0f531b6ceeef21fbe00a8dd (patch) | |
tree | 1e63dabdbc60f3409710cf58ed351e2a1f262941 | |
parent | f845172531fb7410c7fb7780b1a6e51ee6df7d52 (diff) | |
download | lwn-8286274284e15b11b0f531b6ceeef21fbe00a8dd.tar.gz lwn-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.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, 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 /** |