netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] net: make struct tun_struct private to tun.c
@ 2008-04-05 11:53 Rusty Russell
  2008-04-05 11:54 ` [PATCH 2/2] net: check for underlength tap writes Rusty Russell
  2008-04-10 18:18 ` [PATCH 1/2] net: make struct tun_struct private to tun.c Max Krasnyanskiy
  0 siblings, 2 replies; 6+ messages in thread
From: Rusty Russell @ 2008-04-05 11:53 UTC (permalink / raw)
  To: David Miller; +Cc: Max Krasnyansky, netdev

There's no reason for this to be in the header, and it just hurts
recompile time.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff -r f657af5295ee drivers/net/tun.c
--- a/drivers/net/tun.c	Tue Apr 01 21:19:09 2008 +1000
+++ b/drivers/net/tun.c	Fri Apr 04 16:03:31 2008 +1100
@@ -67,9 +67,42 @@
 #include <asm/system.h>
 #include <asm/uaccess.h>
 
+/* Uncomment to enable debugging */
+/* #define TUN_DEBUG 1 */
+
 #ifdef TUN_DEBUG
 static int debug;
+
+#define DBG  if(tun->debug)printk
+#define DBG1 if(debug==2)printk
+#else
+#define DBG( a... )
+#define DBG1( a... )
 #endif
+
+struct tun_struct {
+	struct list_head        list;
+	unsigned long 		flags;
+	int			attached;
+	uid_t			owner;
+	gid_t			group;
+
+	wait_queue_head_t	read_wait;
+	struct sk_buff_head	readq;
+
+	struct net_device	*dev;
+
+	struct fasync_struct    *fasync;
+
+	unsigned long if_flags;
+	u8 dev_addr[ETH_ALEN];
+	u32 chr_filter[2];
+	u32 net_filter[2];
+
+#ifdef TUN_DEBUG	
+	int debug;
+#endif  
+};
 
 /* Network device part of the driver */
 
diff -r f657af5295ee include/linux/Kbuild
--- a/include/linux/Kbuild	Tue Apr 01 21:19:09 2008 +1000
+++ b/include/linux/Kbuild	Fri Apr 04 16:03:31 2008 +1100
@@ -86,6 +86,7 @@ header-y += if_ppp.h
 header-y += if_ppp.h
 header-y += if_slip.h
 header-y += if_strip.h
+header-y += if_tun.h
 header-y += if_tunnel.h
 header-y += in6.h
 header-y += in_route.h
@@ -229,7 +230,6 @@ unifdef-y += if_pppol2tp.h
 unifdef-y += if_pppol2tp.h
 unifdef-y += if_pppox.h
 unifdef-y += if_tr.h
-unifdef-y += if_tun.h
 unifdef-y += if_vlan.h
 unifdef-y += if_wanpipe.h
 unifdef-y += igmp.h
diff -r f657af5295ee include/linux/if_tun.h
--- a/include/linux/if_tun.h	Tue Apr 01 21:19:09 2008 +1000
+++ b/include/linux/if_tun.h	Fri Apr 04 16:03:31 2008 +1100
@@ -18,46 +18,7 @@
 #ifndef __IF_TUN_H
 #define __IF_TUN_H
 
-/* Uncomment to enable debugging */
-/* #define TUN_DEBUG 1 */
-
 #include <linux/types.h>
-
-#ifdef __KERNEL__
-
-#ifdef TUN_DEBUG
-#define DBG  if(tun->debug)printk
-#define DBG1 if(debug==2)printk
-#else
-#define DBG( a... )
-#define DBG1( a... )
-#endif
-
-struct tun_struct {
-	struct list_head        list;
-	unsigned long 		flags;
-	int			attached;
-	uid_t			owner;
-	gid_t			group;
-
-	wait_queue_head_t	read_wait;
-	struct sk_buff_head	readq;
-
-	struct net_device	*dev;
-
-	struct fasync_struct    *fasync;
-
-	unsigned long if_flags;
-	u8 dev_addr[ETH_ALEN];
-	u32 chr_filter[2];
-	u32 net_filter[2];
-
-#ifdef TUN_DEBUG	
-	int debug;
-#endif  
-};
-
-#endif /* __KERNEL__ */
 
 /* Read queue size */
 #define TUN_READQ_SIZE	500

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/2] net: check for underlength tap writes
  2008-04-05 11:53 [PATCH 1/2] net: make struct tun_struct private to tun.c Rusty Russell
@ 2008-04-05 11:54 ` Rusty Russell
  2008-04-10 18:19   ` Max Krasnyanskiy
  2008-04-10 18:18 ` [PATCH 1/2] net: make struct tun_struct private to tun.c Max Krasnyanskiy
  1 sibling, 1 reply; 6+ messages in thread
From: Rusty Russell @ 2008-04-05 11:54 UTC (permalink / raw)
  To: David Miller; +Cc: Max Krasnyansky, netdev

If the user gives a packet under 14 bytes, we'll end up reading off the end
of the skb (not oopsing, just reading off the end).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff -r 99132ad16999 drivers/net/tun.c
--- a/drivers/net/tun.c	Sat Apr 05 21:20:32 2008 +1100
+++ b/drivers/net/tun.c	Sat Apr 05 22:47:20 2008 +1100
@@ -286,8 +286,11 @@ static __inline__ ssize_t tun_get_user(s
 			return -EFAULT;
 	}
 
-	if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV)
+	if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) {
 		align = NET_IP_ALIGN;
+		if (unlikely(len < ETH_HLEN))
+			return -EINVAL;
+	}
 
 	if (!(skb = alloc_skb(len + align, GFP_KERNEL))) {
 		tun->dev->stats.rx_dropped++;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] net: make struct tun_struct private to tun.c
  2008-04-05 11:53 [PATCH 1/2] net: make struct tun_struct private to tun.c Rusty Russell
  2008-04-05 11:54 ` [PATCH 2/2] net: check for underlength tap writes Rusty Russell
@ 2008-04-10 18:18 ` Max Krasnyanskiy
  2008-04-13  1:49   ` David Miller
  1 sibling, 1 reply; 6+ messages in thread
From: Max Krasnyanskiy @ 2008-04-10 18:18 UTC (permalink / raw)
  To: Rusty Russell; +Cc: David Miller, netdev

Ack.
Dave, can you please take this patch.

Max

Rusty Russell wrote:
> There's no reason for this to be in the header, and it just hurts
> recompile time.
> 
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> 
> diff -r f657af5295ee drivers/net/tun.c
> --- a/drivers/net/tun.c	Tue Apr 01 21:19:09 2008 +1000
> +++ b/drivers/net/tun.c	Fri Apr 04 16:03:31 2008 +1100
> @@ -67,9 +67,42 @@
>  #include <asm/system.h>
>  #include <asm/uaccess.h>
>  
> +/* Uncomment to enable debugging */
> +/* #define TUN_DEBUG 1 */
> +
>  #ifdef TUN_DEBUG
>  static int debug;
> +
> +#define DBG  if(tun->debug)printk
> +#define DBG1 if(debug==2)printk
> +#else
> +#define DBG( a... )
> +#define DBG1( a... )
>  #endif
> +
> +struct tun_struct {
> +	struct list_head        list;
> +	unsigned long 		flags;
> +	int			attached;
> +	uid_t			owner;
> +	gid_t			group;
> +
> +	wait_queue_head_t	read_wait;
> +	struct sk_buff_head	readq;
> +
> +	struct net_device	*dev;
> +
> +	struct fasync_struct    *fasync;
> +
> +	unsigned long if_flags;
> +	u8 dev_addr[ETH_ALEN];
> +	u32 chr_filter[2];
> +	u32 net_filter[2];
> +
> +#ifdef TUN_DEBUG	
> +	int debug;
> +#endif  
> +};
>  
>  /* Network device part of the driver */
>  
> diff -r f657af5295ee include/linux/Kbuild
> --- a/include/linux/Kbuild	Tue Apr 01 21:19:09 2008 +1000
> +++ b/include/linux/Kbuild	Fri Apr 04 16:03:31 2008 +1100
> @@ -86,6 +86,7 @@ header-y += if_ppp.h
>  header-y += if_ppp.h
>  header-y += if_slip.h
>  header-y += if_strip.h
> +header-y += if_tun.h
>  header-y += if_tunnel.h
>  header-y += in6.h
>  header-y += in_route.h
> @@ -229,7 +230,6 @@ unifdef-y += if_pppol2tp.h
>  unifdef-y += if_pppol2tp.h
>  unifdef-y += if_pppox.h
>  unifdef-y += if_tr.h
> -unifdef-y += if_tun.h
>  unifdef-y += if_vlan.h
>  unifdef-y += if_wanpipe.h
>  unifdef-y += igmp.h
> diff -r f657af5295ee include/linux/if_tun.h
> --- a/include/linux/if_tun.h	Tue Apr 01 21:19:09 2008 +1000
> +++ b/include/linux/if_tun.h	Fri Apr 04 16:03:31 2008 +1100
> @@ -18,46 +18,7 @@
>  #ifndef __IF_TUN_H
>  #define __IF_TUN_H
>  
> -/* Uncomment to enable debugging */
> -/* #define TUN_DEBUG 1 */
> -
>  #include <linux/types.h>
> -
> -#ifdef __KERNEL__
> -
> -#ifdef TUN_DEBUG
> -#define DBG  if(tun->debug)printk
> -#define DBG1 if(debug==2)printk
> -#else
> -#define DBG( a... )
> -#define DBG1( a... )
> -#endif
> -
> -struct tun_struct {
> -	struct list_head        list;
> -	unsigned long 		flags;
> -	int			attached;
> -	uid_t			owner;
> -	gid_t			group;
> -
> -	wait_queue_head_t	read_wait;
> -	struct sk_buff_head	readq;
> -
> -	struct net_device	*dev;
> -
> -	struct fasync_struct    *fasync;
> -
> -	unsigned long if_flags;
> -	u8 dev_addr[ETH_ALEN];
> -	u32 chr_filter[2];
> -	u32 net_filter[2];
> -
> -#ifdef TUN_DEBUG	
> -	int debug;
> -#endif  
> -};
> -
> -#endif /* __KERNEL__ */
>  
>  /* Read queue size */
>  #define TUN_READQ_SIZE	500
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] net: check for underlength tap writes
  2008-04-05 11:54 ` [PATCH 2/2] net: check for underlength tap writes Rusty Russell
@ 2008-04-10 18:19   ` Max Krasnyanskiy
  2008-04-13  1:51     ` David Miller
  0 siblings, 1 reply; 6+ messages in thread
From: Max Krasnyanskiy @ 2008-04-10 18:19 UTC (permalink / raw)
  To: Rusty Russell; +Cc: David Miller, netdev

Ack. I've been meaning to fix this as well.
Dave, can please merge it.

Thanx
Max


Rusty Russell wrote:
> If the user gives a packet under 14 bytes, we'll end up reading off the end
> of the skb (not oopsing, just reading off the end).
> 
> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
> 
> diff -r 99132ad16999 drivers/net/tun.c
> --- a/drivers/net/tun.c	Sat Apr 05 21:20:32 2008 +1100
> +++ b/drivers/net/tun.c	Sat Apr 05 22:47:20 2008 +1100
> @@ -286,8 +286,11 @@ static __inline__ ssize_t tun_get_user(s
>  			return -EFAULT;
>  	}
>  
> -	if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV)
> +	if ((tun->flags & TUN_TYPE_MASK) == TUN_TAP_DEV) {
>  		align = NET_IP_ALIGN;
> +		if (unlikely(len < ETH_HLEN))
> +			return -EINVAL;
> +	}
>  
>  	if (!(skb = alloc_skb(len + align, GFP_KERNEL))) {
>  		tun->dev->stats.rx_dropped++;
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] net: make struct tun_struct private to tun.c
  2008-04-10 18:18 ` [PATCH 1/2] net: make struct tun_struct private to tun.c Max Krasnyanskiy
@ 2008-04-13  1:49   ` David Miller
  0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2008-04-13  1:49 UTC (permalink / raw)
  To: maxk; +Cc: rusty, netdev

From: Max Krasnyanskiy <maxk@qualcomm.com>
Date: Thu, 10 Apr 2008 11:18:04 -0700

> Ack.
> Dave, can you please take this patch.

Applied.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] net: check for underlength tap writes
  2008-04-10 18:19   ` Max Krasnyanskiy
@ 2008-04-13  1:51     ` David Miller
  0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2008-04-13  1:51 UTC (permalink / raw)
  To: maxk; +Cc: rusty, netdev

From: Max Krasnyanskiy <maxk@qualcomm.com>
Date: Thu, 10 Apr 2008 11:19:38 -0700

> Ack. I've been meaning to fix this as well.
> Dave, can please merge it.

Applied, thanks.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-04-13  1:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-05 11:53 [PATCH 1/2] net: make struct tun_struct private to tun.c Rusty Russell
2008-04-05 11:54 ` [PATCH 2/2] net: check for underlength tap writes Rusty Russell
2008-04-10 18:19   ` Max Krasnyanskiy
2008-04-13  1:51     ` David Miller
2008-04-10 18:18 ` [PATCH 1/2] net: make struct tun_struct private to tun.c Max Krasnyanskiy
2008-04-13  1:49   ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).