From b09801cf93897c59a29dfa901fbe68a5fe5ffa64 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Mon, 14 Jul 2008 03:55:52 +0000 Subject: [PATCH] Fixed the skb->sk dereference prolblem. --- linux-2.6-526-tun-tap.patch | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/linux-2.6-526-tun-tap.patch b/linux-2.6-526-tun-tap.patch index 2701324cf..d5529ecf0 100644 --- a/linux-2.6-526-tun-tap.patch +++ b/linux-2.6-526-tun-tap.patch @@ -1,6 +1,6 @@ diff -Nurb linux-2.6.22-525/drivers/net/Makefile linux-2.6.22-526/drivers/net/Makefile ---- linux-2.6.22-525/drivers/net/Makefile 2008-07-09 15:41:30.000000000 -0400 -+++ linux-2.6.22-526/drivers/net/Makefile 2008-07-09 15:42:38.000000000 -0400 +--- linux-2.6.22-525/drivers/net/Makefile 2008-07-10 10:37:08.000000000 -0400 ++++ linux-2.6.22-526/drivers/net/Makefile 2008-07-10 10:37:22.000000000 -0400 @@ -1,7 +1,7 @@ # # Makefile for the Linux network (ethercard) device drivers. @@ -12,8 +12,8 @@ diff -Nurb linux-2.6.22-525/drivers/net/Makefile linux-2.6.22-526/drivers/net/Ma obj-$(CONFIG_IBM_EMAC) += ibm_emac/ diff -Nurb linux-2.6.22-525/drivers/net/vnet_tun.c linux-2.6.22-526/drivers/net/vnet_tun.c --- linux-2.6.22-525/drivers/net/vnet_tun.c 1969-12-31 19:00:00.000000000 -0500 -+++ linux-2.6.22-526/drivers/net/vnet_tun.c 2008-07-09 15:38:35.000000000 -0400 -@@ -0,0 +1,697 @@ ++++ linux-2.6.22-526/drivers/net/vnet_tun.c 2008-07-13 23:56:16.000000000 -0400 +@@ -0,0 +1,713 @@ +/* + * TUN - Universal TUN/TAP device driver. + * Copyright (C) 1999-2002 Maxim Krasnyansky @@ -91,7 +91,23 @@ diff -Nurb linux-2.6.22-525/drivers/net/vnet_tun.c linux-2.6.22-526/drivers/net/ +struct net_device tun_netdev; +static struct net_device_stats tun_stats; + -+#define get_sk_xid(sk) sk->sk_nid ++int print_once=1; ++ ++static inline xid_t ++get_sk_xid(struct sock *sk) ++{ ++ if (sk) { ++ return (int) sk->sk_nid >= 0 ? sk->sk_nid : 0; ++ } ++ else { ++ if (in_interrupt() && print_once) { ++ print_once=0; ++ printk(KERN_EMERG "vnet_tun: get-sk_xid called in interrupt context!\n"); ++ } ++ return current->xid; ++ } ++} ++ +#define set_sk_xid(sk,xid) sk->sk_nid=xid +#define set_skb_xid(skb,xid) skb->skb_tag=xid + -- 2.43.0