diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 97b25533e5fb1dd741bc7a2541ed598014707a99..8793c2bf7f1572e3196ca9c0a2415d0baea427fc 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 a05ae7f9771ea7315dd7ddfeb5243dbe6e8e356b..37fe9b6adaded0fc2c278886f1cd0a5bdf86742c 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
 
 /**