[kernel] r14354 - in dists/lenny/linux-2.6-abi/debian: . patches/bugfix/all patches/series

Dann Frazier dannf at alioth.debian.org
Thu Oct 8 15:30:08 UTC 2009


Author: dannf
Date: Thu Oct  8 15:30:02 2009
New Revision: 14354

Log:
net: Make setsockopt() optlen be unsigned (CVE-2009-2909)

Added:
   dists/lenny/linux-2.6-abi/debian/patches/bugfix/all/net-make-setsockopt-optlen-be-unsigned.patch
Modified:
   dists/lenny/linux-2.6-abi/debian/changelog
   dists/lenny/linux-2.6-abi/debian/patches/series/18abi

Modified: dists/lenny/linux-2.6-abi/debian/changelog
==============================================================================
--- dists/lenny/linux-2.6-abi/debian/changelog	Thu Oct  8 06:30:33 2009	(r14353)
+++ dists/lenny/linux-2.6-abi/debian/changelog	Thu Oct  8 15:30:02 2009	(r14354)
@@ -7,6 +7,9 @@
   * [openvz] [UBC]: Endless loop in __sk_stream_wait_memory.
     (closes: #542633)
 
+  [ dann frazier ]
+  * net: Make setsockopt() optlen be unsigned (CVE-2009-2909)
+
  -- dann frazier <dannf at debian.org>  Mon, 20 Jul 2009 21:08:49 -0600
 
 linux-2.6 (2.6.26-18) UNRELEASED; urgency=high

Added: dists/lenny/linux-2.6-abi/debian/patches/bugfix/all/net-make-setsockopt-optlen-be-unsigned.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/lenny/linux-2.6-abi/debian/patches/bugfix/all/net-make-setsockopt-optlen-be-unsigned.patch	Thu Oct  8 15:30:02 2009	(r14354)
@@ -0,0 +1,1352 @@
+commit b7058842c940ad2c08dd829b21e5c92ebe3b8758
+Author: David S. Miller <davem at davemloft.net>
+Date:   Wed Sep 30 16:12:20 2009 -0700
+
+    net: Make setsockopt() optlen be unsigned.
+    
+    This provides safety against negative optlen at the type
+    level instead of depending upon (sometimes non-trivial)
+    checks against this sprinkled all over the the place, in
+    each and every implementation.
+    
+    Based upon work done by Arjan van de Ven and feedback
+    from Linus Torvalds.
+    
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+Backported to Debian's 2.6.26 by dann frazier <dannf at hp.com>
+
+diff -urpN linux-source-2.6.26.orig/drivers/atm/ambassador.c linux-source-2.6.26/drivers/atm/ambassador.c
+--- linux-source-2.6.26.orig/drivers/atm/ambassador.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/ambassador.c	2009-10-08 00:32:11.000000000 -0600
+@@ -1327,14 +1327,6 @@ static void amb_close (struct atm_vcc * 
+   return;
+ }
+ 
+-/********** Set socket options for a VC **********/
+-
+-// int amb_getsockopt (struct atm_vcc * atm_vcc, int level, int optname, void * optval, int optlen);
+-
+-/********** Set socket options for a VC **********/
+-
+-// int amb_setsockopt (struct atm_vcc * atm_vcc, int level, int optname, void * optval, int optlen);
+-
+ /********** Send **********/
+ 
+ static int amb_send (struct atm_vcc * atm_vcc, struct sk_buff * skb) {
+diff -urpN linux-source-2.6.26.orig/drivers/atm/eni.c linux-source-2.6.26/drivers/atm/eni.c
+--- linux-source-2.6.26.orig/drivers/atm/eni.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/eni.c	2009-10-08 00:32:11.000000000 -0600
+@@ -2031,7 +2031,7 @@ static int eni_getsockopt(struct atm_vcc
+ 
+ 
+ static int eni_setsockopt(struct atm_vcc *vcc,int level,int optname,
+-    void __user *optval,int optlen)
++    void __user *optval,unsigned int optlen)
+ {
+ 	return -EINVAL;
+ }
+diff -urpN linux-source-2.6.26.orig/drivers/atm/firestream.c linux-source-2.6.26/drivers/atm/firestream.c
+--- linux-source-2.6.26.orig/drivers/atm/firestream.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/firestream.c	2009-10-08 00:32:11.000000000 -0600
+@@ -1244,7 +1244,7 @@ static int fs_getsockopt(struct atm_vcc 
+ 
+ 
+ static int fs_setsockopt(struct atm_vcc *vcc,int level,int optname,
+-			 void __user *optval,int optlen)
++			 void __user *optval,unsigned int optlen)
+ {
+ 	func_enter ();
+ 	func_exit ();
+diff -urpN linux-source-2.6.26.orig/drivers/atm/fore200e.c linux-source-2.6.26/drivers/atm/fore200e.c
+--- linux-source-2.6.26.orig/drivers/atm/fore200e.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/fore200e.c	2009-10-08 00:32:11.000000000 -0600
+@@ -1856,7 +1856,7 @@ fore200e_getsockopt(struct atm_vcc* vcc,
+ 
+ 
+ static int
+-fore200e_setsockopt(struct atm_vcc* vcc, int level, int optname, void __user *optval, int optlen)
++fore200e_setsockopt(struct atm_vcc* vcc, int level, int optname, void __user *optval, unsigned int optlen)
+ {
+     /* struct fore200e* fore200e = FORE200E_DEV(vcc->dev); */
+     
+diff -urpN linux-source-2.6.26.orig/drivers/atm/horizon.c linux-source-2.6.26/drivers/atm/horizon.c
+--- linux-source-2.6.26.orig/drivers/atm/horizon.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/horizon.c	2009-10-08 00:32:11.000000000 -0600
+@@ -2590,7 +2590,7 @@ static int hrz_getsockopt (struct atm_vc
+ }
+ 
+ static int hrz_setsockopt (struct atm_vcc * atm_vcc, int level, int optname,
+-			   void *optval, int optlen) {
++			   void *optval, unsigned int optlen) {
+   hrz_dev * dev = HRZ_DEV(atm_vcc->dev);
+   PRINTD (DBG_FLOW|DBG_VCC, "hrz_setsockopt");
+   switch (level) {
+diff -urpN linux-source-2.6.26.orig/drivers/atm/iphase.c linux-source-2.6.26/drivers/atm/iphase.c
+--- linux-source-2.6.26.orig/drivers/atm/iphase.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/iphase.c	2009-10-08 00:32:11.000000000 -0600
+@@ -2872,7 +2872,7 @@ static int ia_getsockopt(struct atm_vcc 
+ }  
+   
+ static int ia_setsockopt(struct atm_vcc *vcc, int level, int optname,   
+-	void __user *optval, int optlen)  
++	void __user *optval, unsigned int optlen)  
+ {  
+ 	IF_EVENT(printk(">ia_setsockopt\n");)  
+ 	return -EINVAL;  
+diff -urpN linux-source-2.6.26.orig/drivers/atm/zatm.c linux-source-2.6.26/drivers/atm/zatm.c
+--- linux-source-2.6.26.orig/drivers/atm/zatm.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/atm/zatm.c	2009-10-08 00:32:11.000000000 -0600
+@@ -1517,7 +1517,7 @@ static int zatm_getsockopt(struct atm_vc
+ 
+ 
+ static int zatm_setsockopt(struct atm_vcc *vcc,int level,int optname,
+-    void __user *optval,int optlen)
++    void __user *optval,unsigned int optlen)
+ {
+ 	return -EINVAL;
+ }
+diff -urpN linux-source-2.6.26.orig/drivers/net/pppol2tp.c linux-source-2.6.26/drivers/net/pppol2tp.c
+--- linux-source-2.6.26.orig/drivers/net/pppol2tp.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/drivers/net/pppol2tp.c	2009-10-08 00:33:19.000000000 -0600
+@@ -2087,7 +2087,7 @@ static int pppol2tp_session_setsockopt(s
+  * session or the special tunnel type.
+  */
+ static int pppol2tp_setsockopt(struct socket *sock, int level, int optname,
+-			       char __user *optval, int optlen)
++			       char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct pppol2tp_session *session = sk->sk_user_data;
+diff -urpN linux-source-2.6.26.orig/include/linux/atmdev.h linux-source-2.6.26/include/linux/atmdev.h
+--- linux-source-2.6.26.orig/include/linux/atmdev.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/linux/atmdev.h	2009-10-08 00:33:19.000000000 -0600
+@@ -382,7 +382,7 @@ struct atmdev_ops { /* only send is requ
+ 	int (*getsockopt)(struct atm_vcc *vcc,int level,int optname,
+ 	    void __user *optval,int optlen);
+ 	int (*setsockopt)(struct atm_vcc *vcc,int level,int optname,
+-	    void __user *optval,int optlen);
++	    void __user *optval,unsigned int optlen);
+ 	int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
+ 	int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
+ 	void (*phy_put)(struct atm_dev *dev,unsigned char value,
+diff -urpN linux-source-2.6.26.orig/include/linux/mroute6.h linux-source-2.6.26/include/linux/mroute6.h
+--- linux-source-2.6.26.orig/include/linux/mroute6.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/linux/mroute6.h	2009-10-08 00:39:36.000000000 -0600
+@@ -131,7 +131,7 @@ static inline int ip6_mroute_opt(int opt
+ 
+ struct sock;
+ 
+-extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, int);
++extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, unsigned int);
+ extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
+ extern int ip6_mr_input(struct sk_buff *skb);
+ extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg);
+diff -urpN linux-source-2.6.26.orig/include/linux/mroute.h linux-source-2.6.26/include/linux/mroute.h
+--- linux-source-2.6.26.orig/include/linux/mroute.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/linux/mroute.h	2009-10-08 00:36:01.000000000 -0600
+@@ -144,7 +144,7 @@ static inline int ip_mroute_opt(int opt)
+ }
+ #endif
+ 
+-extern int ip_mroute_setsockopt(struct sock *, int, char __user *, int);
++extern int ip_mroute_setsockopt(struct sock *, int, char __user *, unsigned int);
+ extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
+ extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);
+ extern void ip_mr_init(void);
+diff -urpN linux-source-2.6.26.orig/include/linux/netfilter.h linux-source-2.6.26/include/linux/netfilter.h
+--- linux-source-2.6.26.orig/include/linux/netfilter.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/linux/netfilter.h	2009-10-08 00:37:04.000000000 -0600
+@@ -213,12 +213,12 @@ __ret;})
+ 
+ /* Call setsockopt() */
+ int nf_setsockopt(struct sock *sk, int pf, int optval, char __user *opt, 
+-		  int len);
++		  unsigned int len);
+ int nf_getsockopt(struct sock *sk, int pf, int optval, char __user *opt,
+ 		  int *len);
+ 
+ int compat_nf_setsockopt(struct sock *sk, int pf, int optval,
+-		char __user *opt, int len);
++		char __user *opt, unsigned int len);
+ int compat_nf_getsockopt(struct sock *sk, int pf, int optval,
+ 		char __user *opt, int *len);
+ 
+diff -urpN linux-source-2.6.26.orig/include/linux/net.h linux-source-2.6.26/include/linux/net.h
+--- linux-source-2.6.26.orig/include/linux/net.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/linux/net.h	2009-10-08 00:33:19.000000000 -0600
+@@ -158,11 +158,11 @@ struct proto_ops {
+ 	int		(*listen)    (struct socket *sock, int len);
+ 	int		(*shutdown)  (struct socket *sock, int flags);
+ 	int		(*setsockopt)(struct socket *sock, int level,
+-				      int optname, char __user *optval, int optlen);
++				      int optname, char __user *optval, unsigned int optlen);
+ 	int		(*getsockopt)(struct socket *sock, int level,
+ 				      int optname, char __user *optval, int __user *optlen);
+ 	int		(*compat_setsockopt)(struct socket *sock, int level,
+-				      int optname, char __user *optval, int optlen);
++				      int optname, char __user *optval, unsigned int optlen);
+ 	int		(*compat_getsockopt)(struct socket *sock, int level,
+ 				      int optname, char __user *optval, int __user *optlen);
+ 	int		(*sendmsg)   (struct kiocb *iocb, struct socket *sock,
+@@ -236,7 +236,7 @@ extern int kernel_getpeername(struct soc
+ extern int kernel_getsockopt(struct socket *sock, int level, int optname,
+ 			     char *optval, int *optlen);
+ extern int kernel_setsockopt(struct socket *sock, int level, int optname,
+-			     char *optval, int optlen);
++			     char *optval, unsigned int optlen);
+ extern int kernel_sendpage(struct socket *sock, struct page *page, int offset,
+ 			   size_t size, int flags);
+ extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
+@@ -293,7 +293,7 @@ SOCKCALL_WRAP(name, compat_ioctl, (struc
+ SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \
+ SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \
+ SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \
+-			 char __user *optval, int optlen), (sock, level, optname, optval, optlen)) \
++			 char __user *optval, unsigned int optlen), (sock, level, optname, optval, optlen)) \
+ SOCKCALL_WRAP(name, getsockopt, (struct socket *sock, int level, int optname, \
+ 			 char __user *optval, int __user *optlen), (sock, level, optname, optval, optlen)) \
+ SOCKCALL_WRAP(name, sendmsg, (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t len), \
+diff -urpN linux-source-2.6.26.orig/include/net/compat.h linux-source-2.6.26/include/net/compat.h
+--- linux-source-2.6.26.orig/include/net/compat.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/compat.h	2009-10-08 00:33:19.000000000 -0600
+@@ -40,8 +40,8 @@ extern int put_cmsg_compat(struct msghdr
+ 
+ extern int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, unsigned char *, int);
+ 
+-extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, int,
+-	int (*)(struct sock *, int, int, char __user *, int));
++extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, unsigned int,
++	int (*)(struct sock *, int, int, char __user *, unsigned int));
+ extern int compat_mc_getsockopt(struct sock *, int, int, char __user *,
+ 	int __user *, int (*)(struct sock *, int, int, char __user *,
+ 				int __user *));
+diff -urpN linux-source-2.6.26.orig/include/net/inet_connection_sock.h linux-source-2.6.26/include/net/inet_connection_sock.h
+--- linux-source-2.6.26.orig/include/net/inet_connection_sock.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/inet_connection_sock.h	2009-10-08 00:37:54.000000000 -0600
+@@ -48,12 +48,12 @@ struct inet_connection_sock_af_ops {
+ 	u16	    net_header_len;
+ 	u16	    sockaddr_len;
+ 	int	    (*setsockopt)(struct sock *sk, int level, int optname, 
+-				  char __user *optval, int optlen);
++				  char __user *optval, unsigned int optlen);
+ 	int	    (*getsockopt)(struct sock *sk, int level, int optname, 
+ 				  char __user *optval, int __user *optlen);
+ 	int	    (*compat_setsockopt)(struct sock *sk,
+ 				int level, int optname,
+-				char __user *optval, int optlen);
++				char __user *optval, unsigned int optlen);
+ 	int	    (*compat_getsockopt)(struct sock *sk,
+ 				int level, int optname,
+ 				char __user *optval, int __user *optlen);
+@@ -330,5 +330,5 @@ extern void inet_csk_addr2sockaddr(struc
+ extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname,
+ 				      char __user *optval, int __user *optlen);
+ extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname,
+-				      char __user *optval, int optlen);
++				      char __user *optval, unsigned int optlen);
+ #endif /* _INET_CONNECTION_SOCK_H */
+diff -urpN linux-source-2.6.26.orig/include/net/ip.h linux-source-2.6.26/include/net/ip.h
+--- linux-source-2.6.26.orig/include/net/ip.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/ip.h	2009-10-08 00:33:19.000000000 -0600
+@@ -364,10 +364,10 @@ extern int ip_options_rcv_srr(struct sk_
+ extern void	ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb);
+ extern int	ip_cmsg_send(struct net *net,
+ 			     struct msghdr *msg, struct ipcm_cookie *ipc);
+-extern int	ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, int optlen);
++extern int	ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen);
+ extern int	ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen);
+ extern int	compat_ip_setsockopt(struct sock *sk, int level,
+-			int optname, char __user *optval, int optlen);
++			int optname, char __user *optval, unsigned int optlen);
+ extern int	compat_ip_getsockopt(struct sock *sk, int level,
+ 			int optname, char __user *optval, int __user *optlen);
+ extern int	ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *));
+diff -urpN linux-source-2.6.26.orig/include/net/ipv6.h linux-source-2.6.26/include/net/ipv6.h
+--- linux-source-2.6.26.orig/include/net/ipv6.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/ipv6.h	2009-10-08 00:33:19.000000000 -0600
+@@ -536,7 +536,7 @@ extern int ipv6_find_tlv(struct sk_buff 
+ extern int			ipv6_setsockopt(struct sock *sk, int level, 
+ 						int optname,
+ 						char __user *optval, 
+-						int optlen);
++						unsigned int optlen);
+ extern int			ipv6_getsockopt(struct sock *sk, int level, 
+ 						int optname,
+ 						char __user *optval, 
+@@ -545,7 +545,7 @@ extern int			compat_ipv6_setsockopt(stru
+ 						int level,
+ 						int optname,
+ 						char __user *optval,
+-						int optlen);
++						unsigned int optlen);
+ extern int			compat_ipv6_getsockopt(struct sock *sk,
+ 						int level,
+ 						int optname,
+diff -urpN linux-source-2.6.26.orig/include/net/sctp/structs.h linux-source-2.6.26/include/net/sctp/structs.h
+--- linux-source-2.6.26.orig/include/net/sctp/structs.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/sctp/structs.h	2009-10-08 00:33:19.000000000 -0600
+@@ -529,7 +529,7 @@ struct sctp_af {
+ 					 int level,
+ 					 int optname,
+ 					 char __user *optval,
+-					 int optlen);
++					 unsigned int optlen);
+ 	int		(*getsockopt)	(struct sock *sk,
+ 					 int level,
+ 					 int optname,
+@@ -539,7 +539,7 @@ struct sctp_af {
+ 					 int level,
+ 					 int optname,
+ 					 char __user *optval,
+-					 int optlen);
++					 unsigned int optlen);
+ 	int		(*compat_getsockopt)	(struct sock *sk,
+ 					 int level,
+ 					 int optname,
+diff -urpN linux-source-2.6.26.orig/include/net/sock.h linux-source-2.6.26/include/net/sock.h
+--- linux-source-2.6.26.orig/include/net/sock.h	2009-08-18 23:15:13.000000000 -0600
++++ linux-source-2.6.26/include/net/sock.h	2009-10-08 00:33:19.000000000 -0600
+@@ -528,14 +528,14 @@ struct proto {
+ 	void			(*shutdown)(struct sock *sk, int how);
+ 	int			(*setsockopt)(struct sock *sk, int level, 
+ 					int optname, char __user *optval,
+-					int optlen);
++					unsigned int optlen);
+ 	int			(*getsockopt)(struct sock *sk, int level, 
+ 					int optname, char __user *optval, 
+ 					int __user *option);  	 
+ 	int			(*compat_setsockopt)(struct sock *sk,
+ 					int level,
+ 					int optname, char __user *optval,
+-					int optlen);
++					unsigned int optlen);
+ 	int			(*compat_getsockopt)(struct sock *sk,
+ 					int level,
+ 					int optname, char __user *optval,
+@@ -852,7 +852,7 @@ extern void			sock_rfree(struct sk_buff 
+ 
+ extern int			sock_setsockopt(struct socket *sock, int level,
+ 						int op, char __user *optval,
+-						int optlen);
++						unsigned int optlen);
+ 
+ extern int			sock_getsockopt(struct socket *sock, int level,
+ 						int op, char __user *optval, 
+@@ -889,7 +889,7 @@ extern int                      sock_no_
+ extern int			sock_no_getsockopt(struct socket *, int , int,
+ 						   char __user *, int __user *);
+ extern int			sock_no_setsockopt(struct socket *, int, int,
+-						   char __user *, int);
++						   char __user *, unsigned int);
+ extern int                      sock_no_sendmsg(struct kiocb *, struct socket *,
+ 						struct msghdr *, size_t);
+ extern int                      sock_no_recvmsg(struct kiocb *, struct socket *,
+@@ -911,11 +911,11 @@ extern int sock_common_getsockopt(struct
+ extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
+ 			       struct msghdr *msg, size_t size, int flags);
+ extern int sock_common_setsockopt(struct socket *sock, int level, int optname,
+-				  char __user *optval, int optlen);
++				  char __user *optval, unsigned int optlen);
+ extern int compat_sock_common_getsockopt(struct socket *sock, int level,
+ 		int optname, char __user *optval, int __user *optlen);
+ extern int compat_sock_common_setsockopt(struct socket *sock, int level,
+-		int optname, char __user *optval, int optlen);
++		int optname, char __user *optval, unsigned int optlen);
+ 
+ extern void sk_common_release(struct sock *sk);
+ 
+diff -urpN linux-source-2.6.26.orig/include/net/tcp.h linux-source-2.6.26/include/net/tcp.h
+--- linux-source-2.6.26.orig/include/net/tcp.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/tcp.h	2009-10-08 00:33:19.000000000 -0600
+@@ -381,13 +381,13 @@ extern int			tcp_getsockopt(struct sock 
+ 					       int __user *optlen);
+ extern int			tcp_setsockopt(struct sock *sk, int level, 
+ 					       int optname, char __user *optval, 
+-					       int optlen);
++					       unsigned int optlen);
+ extern int			compat_tcp_getsockopt(struct sock *sk,
+ 					int level, int optname,
+ 					char __user *optval, int __user *optlen);
+ extern int			compat_tcp_setsockopt(struct sock *sk,
+ 					int level, int optname,
+-					char __user *optval, int optlen);
++					char __user *optval, unsigned int optlen);
+ extern void			tcp_set_keepalive(struct sock *sk, int val);
+ extern int			tcp_recvmsg(struct kiocb *iocb, struct sock *sk,
+ 					    struct msghdr *msg,
+diff -urpN linux-source-2.6.26.orig/include/net/udp.h linux-source-2.6.26/include/net/udp.h
+--- linux-source-2.6.26.orig/include/net/udp.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/include/net/udp.h	2009-10-08 00:33:19.000000000 -0600
+@@ -145,7 +145,7 @@ extern unsigned int udp_poll(struct file
+ extern int 	udp_lib_getsockopt(struct sock *sk, int level, int optname,
+ 			           char __user *optval, int __user *optlen);
+ extern int 	udp_lib_setsockopt(struct sock *sk, int level, int optname,
+-				   char __user *optval, int optlen,
++				   char __user *optval, unsigned int optlen,
+ 				   int (*push_pending_frames)(struct sock *));
+ 
+ DECLARE_SNMP_STAT(struct udp_mib, udp_statistics);
+diff -urpN linux-source-2.6.26.orig/net/atm/common.c linux-source-2.6.26/net/atm/common.c
+--- linux-source-2.6.26.orig/net/atm/common.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/atm/common.c	2009-10-08 00:33:19.000000000 -0600
+@@ -679,7 +679,7 @@ static int check_qos(struct atm_qos *qos
+ }
+ 
+ int vcc_setsockopt(struct socket *sock, int level, int optname,
+-		   char __user *optval, int optlen)
++		   char __user *optval, unsigned int optlen)
+ {
+ 	struct atm_vcc *vcc;
+ 	unsigned long value;
+diff -urpN linux-source-2.6.26.orig/net/atm/common.h linux-source-2.6.26/net/atm/common.h
+--- linux-source-2.6.26.orig/net/atm/common.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/atm/common.h	2009-10-08 00:33:19.000000000 -0600
+@@ -20,7 +20,7 @@ int vcc_sendmsg(struct kiocb *iocb, stru
+ unsigned int vcc_poll(struct file *file, struct socket *sock, poll_table *wait);
+ int vcc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
+ int vcc_setsockopt(struct socket *sock, int level, int optname,
+-		   char __user *optval, int optlen);
++		   char __user *optval, unsigned int optlen);
+ int vcc_getsockopt(struct socket *sock, int level, int optname,
+ 		   char __user *optval, int __user *optlen);
+ 
+diff -urpN linux-source-2.6.26.orig/net/atm/pvc.c linux-source-2.6.26/net/atm/pvc.c
+--- linux-source-2.6.26.orig/net/atm/pvc.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/atm/pvc.c	2009-10-08 00:33:19.000000000 -0600
+@@ -59,7 +59,7 @@ static int pvc_connect(struct socket *so
+ }
+ 
+ static int pvc_setsockopt(struct socket *sock, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	int error;
+diff -urpN linux-source-2.6.26.orig/net/atm/svc.c linux-source-2.6.26/net/atm/svc.c
+--- linux-source-2.6.26.orig/net/atm/svc.c	2009-08-18 23:15:10.000000000 -0600
++++ linux-source-2.6.26/net/atm/svc.c	2009-10-08 00:33:19.000000000 -0600
+@@ -446,7 +446,7 @@ int svc_change_qos(struct atm_vcc *vcc,s
+ 
+ 
+ static int svc_setsockopt(struct socket *sock, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct atm_vcc *vcc = ATM_SD(sock);
+diff -urpN linux-source-2.6.26.orig/net/ax25/af_ax25.c linux-source-2.6.26/net/ax25/af_ax25.c
+--- linux-source-2.6.26.orig/net/ax25/af_ax25.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ax25/af_ax25.c	2009-10-08 00:33:19.000000000 -0600
+@@ -525,7 +525,7 @@ ax25_cb *ax25_create_cb(void)
+  */
+ 
+ static int ax25_setsockopt(struct socket *sock, int level, int optname,
+-	char __user *optval, int optlen)
++	char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	ax25_cb *ax25;
+diff -urpN linux-source-2.6.26.orig/net/bluetooth/hci_sock.c linux-source-2.6.26/net/bluetooth/hci_sock.c
+--- linux-source-2.6.26.orig/net/bluetooth/hci_sock.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/bluetooth/hci_sock.c	2009-10-08 00:33:19.000000000 -0600
+@@ -479,7 +479,7 @@ drop:
+ 	goto done;
+ }
+ 
+-static int hci_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int len)
++static int hci_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int len)
+ {
+ 	struct hci_ufilter uf = { .opcode = 0 };
+ 	struct sock *sk = sock->sk;
+diff -urpN linux-source-2.6.26.orig/net/bluetooth/l2cap.c linux-source-2.6.26/net/bluetooth/l2cap.c
+--- linux-source-2.6.26.orig/net/bluetooth/l2cap.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/bluetooth/l2cap.c	2009-10-08 00:33:19.000000000 -0600
+@@ -1026,7 +1026,7 @@ static int l2cap_sock_sendmsg(struct kio
+ 	return err;
+ }
+ 
+-static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct l2cap_options opts;
+diff -urpN linux-source-2.6.26.orig/net/bluetooth/rfcomm/sock.c linux-source-2.6.26/net/bluetooth/rfcomm/sock.c
+--- linux-source-2.6.26.orig/net/bluetooth/rfcomm/sock.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/bluetooth/rfcomm/sock.c	2009-10-08 00:33:19.000000000 -0600
+@@ -713,7 +713,7 @@ out:
+ 	return copied ? : err;
+ }
+ 
+-static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	int err = 0;
+diff -urpN linux-source-2.6.26.orig/net/bluetooth/sco.c linux-source-2.6.26/net/bluetooth/sco.c
+--- linux-source-2.6.26.orig/net/bluetooth/sco.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/bluetooth/sco.c	2009-10-08 00:33:19.000000000 -0600
+@@ -649,7 +649,7 @@ static int sco_sock_sendmsg(struct kiocb
+ 	return err;
+ }
+ 
+-static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	int err = 0;
+diff -urpN linux-source-2.6.26.orig/net/can/raw.c linux-source-2.6.26/net/can/raw.c
+--- linux-source-2.6.26.orig/net/can/raw.c	2009-10-08 00:13:43.000000000 -0600
++++ linux-source-2.6.26/net/can/raw.c	2009-10-08 00:33:19.000000000 -0600
+@@ -406,7 +406,7 @@ static int raw_getname(struct socket *so
+ }
+ 
+ static int raw_setsockopt(struct socket *sock, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct raw_sock *ro = raw_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/compat.c linux-source-2.6.26/net/compat.c
+--- linux-source-2.6.26.orig/net/compat.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/compat.c	2009-10-08 00:33:19.000000000 -0600
+@@ -326,7 +326,7 @@ struct compat_sock_fprog {
+ };
+ 
+ static int do_set_attach_filter(struct socket *sock, int level, int optname,
+-				char __user *optval, int optlen)
++				char __user *optval, unsigned int optlen)
+ {
+ 	struct compat_sock_fprog __user *fprog32 = (struct compat_sock_fprog __user *)optval;
+ 	struct sock_fprog __user *kfprog = compat_alloc_user_space(sizeof(struct sock_fprog));
+@@ -346,7 +346,7 @@ static int do_set_attach_filter(struct s
+ }
+ 
+ static int do_set_sock_timeout(struct socket *sock, int level,
+-		int optname, char __user *optval, int optlen)
++		int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct compat_timeval __user *up = (struct compat_timeval __user *) optval;
+ 	struct timeval ktime;
+@@ -368,7 +368,7 @@ static int do_set_sock_timeout(struct so
+ }
+ 
+ static int compat_sock_setsockopt(struct socket *sock, int level, int optname,
+-				char __user *optval, int optlen)
++				char __user *optval, unsigned int optlen)
+ {
+ 	if (optname == SO_ATTACH_FILTER)
+ 		return do_set_attach_filter(sock, level, optname,
+@@ -380,7 +380,7 @@ static int compat_sock_setsockopt(struct
+ }
+ 
+ asmlinkage long compat_sys_setsockopt(int fd, int level, int optname,
+-				char __user *optval, int optlen)
++				char __user *optval, unsigned int optlen)
+ {
+ 	int err;
+ 	struct socket *sock;
+@@ -553,8 +553,8 @@ struct compat_group_filter {
+ 
+ 
+ int compat_mc_setsockopt(struct sock *sock, int level, int optname,
+-	char __user *optval, int optlen,
+-	int (*setsockopt)(struct sock *,int,int,char __user *,int))
++	char __user *optval, unsigned int optlen,
++	int (*setsockopt)(struct sock *,int,int,char __user *,unsigned int))
+ {
+ 	char __user	*koptval = optval;
+ 	int		koptlen = optlen;
+diff -urpN linux-source-2.6.26.orig/net/core/sock.c linux-source-2.6.26/net/core/sock.c
+--- linux-source-2.6.26.orig/net/core/sock.c	2009-08-18 23:15:13.000000000 -0600
++++ linux-source-2.6.26/net/core/sock.c	2009-10-08 00:33:19.000000000 -0600
+@@ -439,7 +439,7 @@ static inline void sock_valbool_flag(str
+  */
+ 
+ int sock_setsockopt(struct socket *sock, int level, int optname,
+-		    char __user *optval, int optlen)
++		    char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk=sock->sk;
+ 	int val;
+@@ -1568,7 +1568,7 @@ int sock_no_shutdown(struct socket *sock
+ }
+ 
+ int sock_no_setsockopt(struct socket *sock, int level, int optname,
+-		    char __user *optval, int optlen)
++		    char __user *optval, unsigned int optlen)
+ {
+ 	return -EOPNOTSUPP;
+ }
+@@ -1870,7 +1870,7 @@ EXPORT_SYMBOL(sock_common_recvmsg);
+  *	Set socket options on an inet socket.
+  */
+ int sock_common_setsockopt(struct socket *sock, int level, int optname,
+-			   char __user *optval, int optlen)
++			   char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 
+@@ -1881,7 +1881,7 @@ EXPORT_SYMBOL(sock_common_setsockopt);
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
+-				  char __user *optval, int optlen)
++				  char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 
+diff -urpN linux-source-2.6.26.orig/net/dccp/dccp.h linux-source-2.6.26/net/dccp/dccp.h
+--- linux-source-2.6.26.orig/net/dccp/dccp.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/dccp/dccp.h	2009-10-08 00:33:19.000000000 -0600
+@@ -274,14 +274,14 @@ extern int	   dccp_disconnect(struct soc
+ extern int	   dccp_getsockopt(struct sock *sk, int level, int optname,
+ 				   char __user *optval, int __user *optlen);
+ extern int	   dccp_setsockopt(struct sock *sk, int level, int optname,
+-				   char __user *optval, int optlen);
++				   char __user *optval, unsigned int optlen);
+ #ifdef CONFIG_COMPAT
+ extern int	   compat_dccp_getsockopt(struct sock *sk,
+ 				int level, int optname,
+ 				char __user *optval, int __user *optlen);
+ extern int	   compat_dccp_setsockopt(struct sock *sk,
+ 				int level, int optname,
+-				char __user *optval, int optlen);
++				char __user *optval, unsigned int optlen);
+ #endif
+ extern int	   dccp_ioctl(struct sock *sk, int cmd, unsigned long arg);
+ extern int	   dccp_sendmsg(struct kiocb *iocb, struct sock *sk,
+diff -urpN linux-source-2.6.26.orig/net/dccp/proto.c linux-source-2.6.26/net/dccp/proto.c
+--- linux-source-2.6.26.orig/net/dccp/proto.c	2009-08-18 23:15:09.000000000 -0600
++++ linux-source-2.6.26/net/dccp/proto.c	2009-10-08 00:33:19.000000000 -0600
+@@ -432,7 +432,7 @@ out:
+ EXPORT_SYMBOL_GPL(dccp_ioctl);
+ 
+ static int dccp_setsockopt_service(struct sock *sk, const __be32 service,
+-				   char __user *optval, int optlen)
++				   char __user *optval, unsigned int optlen)
+ {
+ 	struct dccp_sock *dp = dccp_sk(sk);
+ 	struct dccp_service_list *sl = NULL;
+@@ -505,7 +505,7 @@ out_free_val:
+ }
+ 
+ static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
+-		char __user *optval, int optlen)
++		char __user *optval, unsigned int optlen)
+ {
+ 	struct dccp_sock *dp = dccp_sk(sk);
+ 	int val, err = 0;
+@@ -572,7 +572,7 @@ static int do_dccp_setsockopt(struct soc
+ }
+ 
+ int dccp_setsockopt(struct sock *sk, int level, int optname,
+-		    char __user *optval, int optlen)
++		    char __user *optval, unsigned int optlen)
+ {
+ 	if (level != SOL_DCCP)
+ 		return inet_csk(sk)->icsk_af_ops->setsockopt(sk, level,
+@@ -585,7 +585,7 @@ EXPORT_SYMBOL_GPL(dccp_setsockopt);
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_dccp_setsockopt(struct sock *sk, int level, int optname,
+-			   char __user *optval, int optlen)
++			   char __user *optval, unsigned int optlen)
+ {
+ 	if (level != SOL_DCCP)
+ 		return inet_csk_compat_setsockopt(sk, level, optname,
+diff -urpN linux-source-2.6.26.orig/net/decnet/af_decnet.c linux-source-2.6.26/net/decnet/af_decnet.c
+--- linux-source-2.6.26.orig/net/decnet/af_decnet.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/decnet/af_decnet.c	2009-10-08 00:33:19.000000000 -0600
+@@ -157,7 +157,7 @@ static struct hlist_head dn_sk_hash[DN_S
+ static struct hlist_head dn_wild_sk;
+ static atomic_t decnet_memory_allocated;
+ 
+-static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen, int flags);
++static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen, int flags);
+ static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags);
+ 
+ static struct hlist_head *dn_find_list(struct sock *sk)
+@@ -1328,7 +1328,7 @@ out:
+ 	return err;
+ }
+ 
+-static int dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++static int dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	int err;
+@@ -1340,7 +1340,7 @@ static int dn_setsockopt(struct socket *
+ 	return err;
+ }
+ 
+-static int __dn_setsockopt(struct socket *sock, int level,int optname, char __user *optval, int optlen, int flags)
++static int __dn_setsockopt(struct socket *sock, int level,int optname, char __user *optval, unsigned int optlen, int flags)
+ {
+ 	struct	sock *sk = sock->sk;
+ 	struct dn_scp *scp = DN_SK(sk);
+diff -urpN linux-source-2.6.26.orig/net/ipv4/inet_connection_sock.c linux-source-2.6.26/net/ipv4/inet_connection_sock.c
+--- linux-source-2.6.26.orig/net/ipv4/inet_connection_sock.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/inet_connection_sock.c	2009-10-08 00:33:40.000000000 -0600
+@@ -677,7 +677,7 @@ int inet_csk_compat_getsockopt(struct so
+ EXPORT_SYMBOL_GPL(inet_csk_compat_getsockopt);
+ 
+ int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname,
+-			       char __user *optval, int optlen)
++			       char __user *optval, unsigned int optlen)
+ {
+ 	const struct inet_connection_sock *icsk = inet_csk(sk);
+ 
+diff -urpN linux-source-2.6.26.orig/net/ipv4/ipmr.c linux-source-2.6.26/net/ipv4/ipmr.c
+--- linux-source-2.6.26.orig/net/ipv4/ipmr.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/ipmr.c	2009-10-08 00:41:11.000000000 -0600
+@@ -867,7 +867,7 @@ static void mrtsock_destruct(struct sock
+  *	MOSPF/PIM router set up we can clean this up.
+  */
+ 
+-int ip_mroute_setsockopt(struct sock *sk,int optname,char __user *optval,int optlen)
++int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	int ret;
+ 	struct vifctl vif;
+diff -urpN linux-source-2.6.26.orig/net/ipv4/ip_sockglue.c linux-source-2.6.26/net/ipv4/ip_sockglue.c
+--- linux-source-2.6.26.orig/net/ipv4/ip_sockglue.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/ip_sockglue.c	2009-10-08 00:33:40.000000000 -0600
+@@ -410,7 +410,7 @@ out:
+  */
+ 
+ static int do_ip_setsockopt(struct sock *sk, int level,
+-			    int optname, char __user *optval, int optlen)
++			    int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct inet_sock *inet = inet_sk(sk);
+ 	int val=0,err;
+@@ -893,7 +893,7 @@ e_inval:
+ }
+ 
+ int ip_setsockopt(struct sock *sk, int level,
+-		int optname, char __user *optval, int optlen)
++		int optname, char __user *optval, unsigned int optlen)
+ {
+ 	int err;
+ 
+@@ -917,7 +917,7 @@ int ip_setsockopt(struct sock *sk, int l
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_ip_setsockopt(struct sock *sk, int level, int optname,
+-			 char __user *optval, int optlen)
++			 char __user *optval, unsigned int optlen)
+ {
+ 	int err;
+ 
+diff -urpN linux-source-2.6.26.orig/net/ipv4/raw.c linux-source-2.6.26/net/ipv4/raw.c
+--- linux-source-2.6.26.orig/net/ipv4/raw.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/raw.c	2009-10-08 00:33:40.000000000 -0600
+@@ -737,7 +737,7 @@ out:	return ret;
+ }
+ 
+ static int do_raw_setsockopt(struct sock *sk, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	if (optname == ICMP_FILTER) {
+ 		if (inet_sk(sk)->num != IPPROTO_ICMP)
+@@ -749,7 +749,7 @@ static int do_raw_setsockopt(struct sock
+ }
+ 
+ static int raw_setsockopt(struct sock *sk, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	if (level != SOL_RAW)
+ 		return ip_setsockopt(sk, level, optname, optval, optlen);
+@@ -758,7 +758,7 @@ static int raw_setsockopt(struct sock *s
+ 
+ #ifdef CONFIG_COMPAT
+ static int compat_raw_setsockopt(struct sock *sk, int level, int optname,
+-				 char __user *optval, int optlen)
++				 char __user *optval, unsigned int optlen)
+ {
+ 	if (level != SOL_RAW)
+ 		return compat_ip_setsockopt(sk, level, optname, optval, optlen);
+diff -urpN linux-source-2.6.26.orig/net/ipv4/tcp.c linux-source-2.6.26/net/ipv4/tcp.c
+--- linux-source-2.6.26.orig/net/ipv4/tcp.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/tcp.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1985,7 +1985,7 @@ int tcp_disconnect(struct sock *sk, int 
+  *	Socket option code for TCP.
+  */
+ static int do_tcp_setsockopt(struct sock *sk, int level,
+-		int optname, char __user *optval, int optlen)
++		int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct tcp_sock *tp = tcp_sk(sk);
+ 	struct inet_connection_sock *icsk = inet_csk(sk);
+@@ -2173,7 +2173,7 @@ static int do_tcp_setsockopt(struct sock
+ }
+ 
+ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
+-		   int optlen)
++		   unsigned int optlen)
+ {
+ 	struct inet_connection_sock *icsk = inet_csk(sk);
+ 
+@@ -2185,7 +2185,7 @@ int tcp_setsockopt(struct sock *sk, int 
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_tcp_setsockopt(struct sock *sk, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	if (level != SOL_TCP)
+ 		return inet_csk_compat_setsockopt(sk, level, optname,
+diff -urpN linux-source-2.6.26.orig/net/ipv4/udp.c linux-source-2.6.26/net/ipv4/udp.c
+--- linux-source-2.6.26.orig/net/ipv4/udp.c	2009-08-18 23:15:10.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/udp.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1276,7 +1276,7 @@ int udp_destroy_sock(struct sock *sk)
+  *	Socket option code for UDP
+  */
+ int udp_lib_setsockopt(struct sock *sk, int level, int optname,
+-		       char __user *optval, int optlen,
++		       char __user *optval, unsigned int optlen,
+ 		       int (*push_pending_frames)(struct sock *))
+ {
+ 	struct udp_sock *up = udp_sk(sk);
+@@ -1357,7 +1357,7 @@ int udp_lib_setsockopt(struct sock *sk, 
+ }
+ 
+ int udp_setsockopt(struct sock *sk, int level, int optname,
+-		   char __user *optval, int optlen)
++		   char __user *optval, unsigned int optlen)
+ {
+ 	if (level == SOL_UDP  ||  level == SOL_UDPLITE)
+ 		return udp_lib_setsockopt(sk, level, optname, optval, optlen,
+@@ -1367,7 +1367,7 @@ int udp_setsockopt(struct sock *sk, int 
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_udp_setsockopt(struct sock *sk, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	if (level == SOL_UDP  ||  level == SOL_UDPLITE)
+ 		return udp_lib_setsockopt(sk, level, optname, optval, optlen,
+diff -urpN linux-source-2.6.26.orig/net/ipv4/udp_impl.h linux-source-2.6.26/net/ipv4/udp_impl.h
+--- linux-source-2.6.26.orig/net/ipv4/udp_impl.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv4/udp_impl.h	2009-10-08 00:33:40.000000000 -0600
+@@ -11,13 +11,13 @@ extern void 	__udp4_lib_err(struct sk_bu
+ extern int	udp_v4_get_port(struct sock *sk, unsigned short snum);
+ 
+ extern int	udp_setsockopt(struct sock *sk, int level, int optname,
+-			       char __user *optval, int optlen);
++			       char __user *optval, unsigned int optlen);
+ extern int	udp_getsockopt(struct sock *sk, int level, int optname,
+ 			       char __user *optval, int __user *optlen);
+ 
+ #ifdef CONFIG_COMPAT
+ extern int	compat_udp_setsockopt(struct sock *sk, int level, int optname,
+-				      char __user *optval, int optlen);
++				      char __user *optval, unsigned int optlen);
+ extern int	compat_udp_getsockopt(struct sock *sk, int level, int optname,
+ 				      char __user *optval, int __user *optlen);
+ #endif
+diff -urpN linux-source-2.6.26.orig/net/ipv6/ip6mr.c linux-source-2.6.26/net/ipv6/ip6mr.c
+--- linux-source-2.6.26.orig/net/ipv6/ip6mr.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv6/ip6mr.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1144,7 +1144,7 @@ int ip6mr_sk_done(struct sock *sk)
+  *	MOSPF/PIM router set up we can clean this up.
+  */
+ 
+-int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, int optlen)
++int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	int ret;
+ 	struct mif6ctl vif;
+diff -urpN linux-source-2.6.26.orig/net/ipv6/ipv6_sockglue.c linux-source-2.6.26/net/ipv6/ipv6_sockglue.c
+--- linux-source-2.6.26.orig/net/ipv6/ipv6_sockglue.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv6/ipv6_sockglue.c	2009-10-08 00:33:40.000000000 -0600
+@@ -128,7 +128,7 @@ struct ipv6_txoptions *ipv6_update_optio
+ }
+ 
+ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
+-		    char __user *optval, int optlen)
++		    char __user *optval, unsigned int optlen)
+ {
+ 	struct ipv6_pinfo *np = inet6_sk(sk);
+ 	struct net *net = sock_net(sk);
+@@ -751,7 +751,7 @@ e_inval:
+ }
+ 
+ int ipv6_setsockopt(struct sock *sk, int level, int optname,
+-		    char __user *optval, int optlen)
++		    char __user *optval, unsigned int optlen)
+ {
+ 	int err;
+ 
+@@ -779,7 +779,7 @@ EXPORT_SYMBOL(ipv6_setsockopt);
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
+-			   char __user *optval, int optlen)
++			   char __user *optval, unsigned int optlen)
+ {
+ 	int err;
+ 
+diff -urpN linux-source-2.6.26.orig/net/ipv6/raw.c linux-source-2.6.26/net/ipv6/raw.c
+--- linux-source-2.6.26.orig/net/ipv6/raw.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv6/raw.c	2009-10-08 00:33:40.000000000 -0600
+@@ -959,7 +959,7 @@ static int rawv6_geticmpfilter(struct so
+ 
+ 
+ static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
+-			    char __user *optval, int optlen)
++			    char __user *optval, unsigned int optlen)
+ {
+ 	struct raw6_sock *rp = raw6_sk(sk);
+ 	int val;
+@@ -1002,7 +1002,7 @@ static int do_rawv6_setsockopt(struct so
+ }
+ 
+ static int rawv6_setsockopt(struct sock *sk, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	switch(level) {
+ 		case SOL_RAW:
+@@ -1026,7 +1026,7 @@ static int rawv6_setsockopt(struct sock 
+ 
+ #ifdef CONFIG_COMPAT
+ static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname,
+-				   char __user *optval, int optlen)
++				   char __user *optval, unsigned int optlen)
+ {
+ 	switch (level) {
+ 	case SOL_RAW:
+diff -urpN linux-source-2.6.26.orig/net/ipv6/udp.c linux-source-2.6.26/net/ipv6/udp.c
+--- linux-source-2.6.26.orig/net/ipv6/udp.c	2009-08-18 23:15:09.000000000 -0600
++++ linux-source-2.6.26/net/ipv6/udp.c	2009-10-08 00:33:40.000000000 -0600
+@@ -896,7 +896,7 @@ int udpv6_destroy_sock(struct sock *sk)
+  *	Socket option code for UDP
+  */
+ int udpv6_setsockopt(struct sock *sk, int level, int optname,
+-		     char __user *optval, int optlen)
++		     char __user *optval, unsigned int optlen)
+ {
+ 	if (level == SOL_UDP  ||  level == SOL_UDPLITE)
+ 		return udp_lib_setsockopt(sk, level, optname, optval, optlen,
+@@ -906,7 +906,7 @@ int udpv6_setsockopt(struct sock *sk, in
+ 
+ #ifdef CONFIG_COMPAT
+ int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
+-			    char __user *optval, int optlen)
++			    char __user *optval, unsigned int optlen)
+ {
+ 	if (level == SOL_UDP  ||  level == SOL_UDPLITE)
+ 		return udp_lib_setsockopt(sk, level, optname, optval, optlen,
+diff -urpN linux-source-2.6.26.orig/net/ipv6/udp_impl.h linux-source-2.6.26/net/ipv6/udp_impl.h
+--- linux-source-2.6.26.orig/net/ipv6/udp_impl.h	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipv6/udp_impl.h	2009-10-08 00:33:40.000000000 -0600
+@@ -16,10 +16,10 @@ extern int	udp_v6_get_port(struct sock *
+ extern int	udpv6_getsockopt(struct sock *sk, int level, int optname,
+ 				 char __user *optval, int __user *optlen);
+ extern int	udpv6_setsockopt(struct sock *sk, int level, int optname,
+-				 char __user *optval, int optlen);
++				 char __user *optval, unsigned int optlen);
+ #ifdef CONFIG_COMPAT
+ extern int	compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
+-					char __user *optval, int optlen);
++					char __user *optval, unsigned int optlen);
+ extern int	compat_udpv6_getsockopt(struct sock *sk, int level, int optname,
+ 				       char __user *optval, int __user *optlen);
+ #endif
+diff -urpN linux-source-2.6.26.orig/net/ipx/af_ipx.c linux-source-2.6.26/net/ipx/af_ipx.c
+--- linux-source-2.6.26.orig/net/ipx/af_ipx.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/ipx/af_ipx.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1291,7 +1291,7 @@ const char *ipx_device_name(struct ipx_i
+  * socket object. */
+ 
+ static int ipx_setsockopt(struct socket *sock, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	int opt;
+diff -urpN linux-source-2.6.26.orig/net/irda/af_irda.c linux-source-2.6.26/net/irda/af_irda.c
+--- linux-source-2.6.26.orig/net/irda/af_irda.c	2009-10-08 00:08:07.000000000 -0600
++++ linux-source-2.6.26/net/irda/af_irda.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1827,7 +1827,7 @@ static int irda_compat_ioctl(struct sock
+  *
+  */
+ static int irda_setsockopt(struct socket *sock, int level, int optname,
+-			   char __user *optval, int optlen)
++			   char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct irda_sock *self = irda_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/llc/af_llc.c linux-source-2.6.26/net/llc/af_llc.c
+--- linux-source-2.6.26.orig/net/llc/af_llc.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/llc/af_llc.c	2009-10-08 00:33:40.000000000 -0600
+@@ -975,7 +975,7 @@ static int llc_ui_ioctl(struct socket *s
+  *	Set various connection specific parameters.
+  */
+ static int llc_ui_setsockopt(struct socket *sock, int level, int optname,
+-			     char __user *optval, int optlen)
++			     char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct llc_sock *llc = llc_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/netfilter/nf_sockopt.c linux-source-2.6.26/net/netfilter/nf_sockopt.c
+--- linux-source-2.6.26.orig/net/netfilter/nf_sockopt.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/netfilter/nf_sockopt.c	2009-10-08 00:40:27.000000000 -0600
+@@ -116,7 +116,7 @@ static int nf_sockopt(struct sock *sk, i
+ }
+ 
+ int nf_setsockopt(struct sock *sk, int pf, int val, char __user *opt,
+-		  int len)
++		  unsigned int len)
+ {
+ 	return nf_sockopt(sk, pf, val, opt, &len, 0);
+ }
+@@ -156,7 +156,7 @@ static int compat_nf_sockopt(struct sock
+ }
+ 
+ int compat_nf_setsockopt(struct sock *sk, int pf,
+-		int val, char __user *opt, int len)
++		int val, char __user *opt, unsigned int len)
+ {
+ 	return compat_nf_sockopt(sk, pf, val, opt, &len, 0);
+ }
+diff -urpN linux-source-2.6.26.orig/net/netlink/af_netlink.c linux-source-2.6.26/net/netlink/af_netlink.c
+--- linux-source-2.6.26.orig/net/netlink/af_netlink.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/netlink/af_netlink.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1113,7 +1113,7 @@ static void netlink_update_socket_mc(str
+ }
+ 
+ static int netlink_setsockopt(struct socket *sock, int level, int optname,
+-			      char __user *optval, int optlen)
++			      char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct netlink_sock *nlk = nlk_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/netrom/af_netrom.c linux-source-2.6.26/net/netrom/af_netrom.c
+--- linux-source-2.6.26.orig/net/netrom/af_netrom.c	2009-10-08 00:14:57.000000000 -0600
++++ linux-source-2.6.26/net/netrom/af_netrom.c	2009-10-08 00:33:40.000000000 -0600
+@@ -288,7 +288,7 @@ void nr_destroy_socket(struct sock *sk)
+  */
+ 
+ static int nr_setsockopt(struct socket *sock, int level, int optname,
+-	char __user *optval, int optlen)
++	char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct nr_sock *nr = nr_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/packet/af_packet.c linux-source-2.6.26/net/packet/af_packet.c
+--- linux-source-2.6.26.orig/net/packet/af_packet.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/packet/af_packet.c	2009-10-08 00:33:40.000000000 -0600
+@@ -1304,7 +1304,7 @@ static void packet_flush_mclist(struct s
+ }
+ 
+ static int
+-packet_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++packet_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct packet_sock *po = pkt_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/rose/af_rose.c linux-source-2.6.26/net/rose/af_rose.c
+--- linux-source-2.6.26.orig/net/rose/af_rose.c	2009-10-08 00:09:45.000000000 -0600
++++ linux-source-2.6.26/net/rose/af_rose.c	2009-10-08 00:34:07.000000000 -0600
+@@ -359,7 +359,7 @@ void rose_destroy_socket(struct sock *sk
+  */
+ 
+ static int rose_setsockopt(struct socket *sock, int level, int optname,
+-	char __user *optval, int optlen)
++	char __user *optval, unsigned int optlen)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct rose_sock *rose = rose_sk(sk);
+diff -urpN linux-source-2.6.26.orig/net/rxrpc/af_rxrpc.c linux-source-2.6.26/net/rxrpc/af_rxrpc.c
+--- linux-source-2.6.26.orig/net/rxrpc/af_rxrpc.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/rxrpc/af_rxrpc.c	2009-10-08 00:34:07.000000000 -0600
+@@ -506,7 +506,7 @@ out:
+  * set RxRPC socket options
+  */
+ static int rxrpc_setsockopt(struct socket *sock, int level, int optname,
+-			    char __user *optval, int optlen)
++			    char __user *optval, unsigned int optlen)
+ {
+ 	struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
+ 	unsigned min_sec_level;
+diff -urpN linux-source-2.6.26.orig/net/sctp/socket.c linux-source-2.6.26/net/sctp/socket.c
+--- linux-source-2.6.26.orig/net/sctp/socket.c	2009-08-18 23:15:09.000000000 -0600
++++ linux-source-2.6.26/net/sctp/socket.c	2009-10-08 00:44:09.000000000 -0600
+@@ -1939,7 +1939,8 @@ out:
+  * instead a error will be indicated to the user.
+  */
+ static int sctp_setsockopt_disable_fragments(struct sock *sk,
+-					    char __user *optval, int optlen)
++					     char __user *optval,
++					     unsigned int optlen)
+ {
+ 	int val;
+ 
+@@ -1955,7 +1956,7 @@ static int sctp_setsockopt_disable_fragm
+ }
+ 
+ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
+-					int optlen)
++				  unsigned int optlen)
+ {
+ 	if (optlen > sizeof(struct sctp_event_subscribe))
+ 		return -EINVAL;
+@@ -1976,7 +1977,7 @@ static int sctp_setsockopt_events(struct
+  * association is closed.
+  */
+ static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,
+-					    int optlen)
++				     unsigned int optlen)
+ {
+ 	struct sctp_sock *sp = sctp_sk(sk);
+ 
+@@ -2230,7 +2231,8 @@ static int sctp_apply_peer_addr_params(s
+ }
+ 
+ static int sctp_setsockopt_peer_addr_params(struct sock *sk,
+-					    char __user *optval, int optlen)
++					    char __user *optval,
++					    unsigned int optlen)
+ {
+ 	struct sctp_paddrparams  params;
+ 	struct sctp_transport   *trans = NULL;
+@@ -2334,7 +2336,7 @@ static int sctp_setsockopt_peer_addr_par
+  */
+ 
+ static int sctp_setsockopt_delayed_ack_time(struct sock *sk,
+-					    char __user *optval, int optlen)
++				       char __user *optval, unsigned int optlen)
+ {
+ 	struct sctp_assoc_value  params;
+ 	struct sctp_transport   *trans = NULL;
+@@ -2416,7 +2418,7 @@ static int sctp_setsockopt_delayed_ack_t
+  * by the change).  With TCP-style sockets, this option is inherited by
+  * sockets derived from a listener socket.
+  */
+-static int sctp_setsockopt_initmsg(struct sock *sk, char __user *optval, int optlen)
++static int sctp_setsockopt_initmsg(struct sock *sk, char __user *optval, unsigned int optlen)
+ {
+ 	struct sctp_initmsg sinit;
+ 	struct sctp_sock *sp = sctp_sk(sk);
+@@ -2453,7 +2455,8 @@ static int sctp_setsockopt_initmsg(struc
+  *   to this call if the caller is using the UDP model.
+  */
+ static int sctp_setsockopt_default_send_param(struct sock *sk,
+-						char __user *optval, int optlen)
++					      char __user *optval,
++					      unsigned int optlen)
+ {
+ 	struct sctp_sndrcvinfo info;
+ 	struct sctp_association *asoc;
+@@ -2492,7 +2495,7 @@ static int sctp_setsockopt_default_send_
+  * association peer's addresses.
+  */
+ static int sctp_setsockopt_primary_addr(struct sock *sk, char __user *optval,
+-					int optlen)
++					unsigned int optlen)
+ {
+ 	struct sctp_prim prim;
+ 	struct sctp_transport *trans;
+@@ -2521,7 +2524,7 @@ static int sctp_setsockopt_primary_addr(
+  *  integer boolean flag.
+  */
+ static int sctp_setsockopt_nodelay(struct sock *sk, char __user *optval,
+-					int optlen)
++				   unsigned int optlen)
+ {
+ 	int val;
+ 
+@@ -2546,7 +2549,8 @@ static int sctp_setsockopt_nodelay(struc
+  * be changed.
+  *
+  */
+-static int sctp_setsockopt_rtoinfo(struct sock *sk, char __user *optval, int optlen) {
++static int sctp_setsockopt_rtoinfo(struct sock *sk, char __user *optval, unsigned int optlen)
++{
+ 	struct sctp_rtoinfo rtoinfo;
+ 	struct sctp_association *asoc;
+ 
+@@ -2598,7 +2602,7 @@ static int sctp_setsockopt_rtoinfo(struc
+  * See [SCTP] for more information.
+  *
+  */
+-static int sctp_setsockopt_associnfo(struct sock *sk, char __user *optval, int optlen)
++static int sctp_setsockopt_associnfo(struct sock *sk, char __user *optval, unsigned int optlen)
+ {
+ 
+ 	struct sctp_assocparams assocparams;
+@@ -2670,7 +2674,7 @@ static int sctp_setsockopt_associnfo(str
+  * addresses and a user will receive both PF_INET6 and PF_INET type
+  * addresses on the socket.
+  */
+-static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, int optlen)
++static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, unsigned int optlen)
+ {
+ 	int val;
+ 	struct sctp_sock *sp = sctp_sk(sk);
+@@ -2697,7 +2701,7 @@ static int sctp_setsockopt_mappedv4(stru
+  * PMTU of the underlying association is smaller than the value set by
+  * the user.
+  */
+-static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, int optlen)
++static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int optlen)
+ {
+ 	struct sctp_association *asoc;
+ 	struct sctp_sock *sp = sctp_sk(sk);
+@@ -2729,7 +2733,7 @@ static int sctp_setsockopt_maxseg(struct
+  *   set primary request:
+  */
+ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optval,
+-					     int optlen)
++					     unsigned int optlen)
+ {
+ 	struct sctp_sock	*sp;
+ 	struct sctp_endpoint	*ep;
+@@ -2780,7 +2784,7 @@ static int sctp_setsockopt_peer_primary_
+ }
+ 
+ static int sctp_setsockopt_adaptation_layer(struct sock *sk, char __user *optval,
+-					  int optlen)
++					    unsigned int optlen)
+ {
+ 	struct sctp_setadaptation adaptation;
+ 
+@@ -2809,7 +2813,7 @@ static int sctp_setsockopt_adaptation_la
+  * saved with outbound messages.
+  */
+ static int sctp_setsockopt_context(struct sock *sk, char __user *optval,
+-				   int optlen)
++				   unsigned int optlen)
+ {
+ 	struct sctp_assoc_value params;
+ 	struct sctp_sock *sp;
+@@ -2860,7 +2864,7 @@ static int sctp_setsockopt_context(struc
+  */
+ static int sctp_setsockopt_fragment_interleave(struct sock *sk,
+ 					       char __user *optval,
+-					       int optlen)
++					       unsigned int optlen)
+ {
+ 	int val;
+ 
+@@ -2886,7 +2890,7 @@ static int sctp_setsockopt_fragment_inte
+  */
+ static int sctp_setsockopt_partial_delivery_point(struct sock *sk,
+ 						  char __user *optval,
+-						  int optlen)
++						  unsigned int optlen)
+ {
+ 	u32 val;
+ 
+@@ -2913,7 +2917,7 @@ static int sctp_setsockopt_partial_deliv
+  */
+ static int sctp_setsockopt_maxburst(struct sock *sk,
+ 				    char __user *optval,
+-				    int optlen)
++				    unsigned int optlen)
+ {
+ 	struct sctp_assoc_value params;
+ 	struct sctp_sock *sp;
+@@ -2960,8 +2964,8 @@ static int sctp_setsockopt_maxburst(stru
+  * will only effect future associations on the socket.
+  */
+ static int sctp_setsockopt_auth_chunk(struct sock *sk,
+-				    char __user *optval,
+-				    int optlen)
++				      char __user *optval,
++				      unsigned int optlen)
+ {
+ 	struct sctp_authchunk val;
+ 
+@@ -2992,8 +2996,8 @@ static int sctp_setsockopt_auth_chunk(st
+  * endpoint requires the peer to use.
+  */
+ static int sctp_setsockopt_hmac_ident(struct sock *sk,
+-				    char __user *optval,
+-				    int optlen)
++				      char __user *optval,
++				      unsigned int optlen)
+ {
+ 	struct sctp_hmacalgo *hmacs;
+ 	u32 idents;
+@@ -3035,7 +3039,7 @@ out:
+  */
+ static int sctp_setsockopt_auth_key(struct sock *sk,
+ 				    char __user *optval,
+-				    int optlen)
++				    unsigned int optlen)
+ {
+ 	struct sctp_authkey *authkey;
+ 	struct sctp_association *asoc;
+@@ -3080,8 +3084,8 @@ out:
+  * the association shared key.
+  */
+ static int sctp_setsockopt_active_key(struct sock *sk,
+-					char __user *optval,
+-					int optlen)
++				      char __user *optval,
++				      unsigned int optlen)
+ {
+ 	struct sctp_authkeyid val;
+ 	struct sctp_association *asoc;
+@@ -3108,8 +3112,8 @@ static int sctp_setsockopt_active_key(st
+  * This set option will delete a shared secret key from use.
+  */
+ static int sctp_setsockopt_del_key(struct sock *sk,
+-					char __user *optval,
+-					int optlen)
++				   char __user *optval,
++				   unsigned int optlen)
+ {
+ 	struct sctp_authkeyid val;
+ 	struct sctp_association *asoc;
+@@ -3152,7 +3156,7 @@ static int sctp_setsockopt_del_key(struc
+  *   optlen  - the size of the buffer.
+  */
+ SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname,
+-				char __user *optval, int optlen)
++				char __user *optval, unsigned int optlen)
+ {
+ 	int retval = 0;
+ 
+diff -urpN linux-source-2.6.26.orig/net/socket.c linux-source-2.6.26/net/socket.c
+--- linux-source-2.6.26.orig/net/socket.c	2009-08-18 23:15:14.000000000 -0600
++++ linux-source-2.6.26/net/socket.c	2009-10-08 00:34:07.000000000 -0600
+@@ -2287,7 +2287,7 @@ int kernel_getsockopt(struct socket *soc
+ }
+ 
+ int kernel_setsockopt(struct socket *sock, int level, int optname,
+-			char *optval, int optlen)
++			char *optval, unsigned int optlen)
+ {
+ 	mm_segment_t oldfs = get_fs();
+ 	int err;
+diff -urpN linux-source-2.6.26.orig/net/tipc/socket.c linux-source-2.6.26/net/tipc/socket.c
+--- linux-source-2.6.26.orig/net/tipc/socket.c	2008-07-13 15:51:29.000000000 -0600
++++ linux-source-2.6.26/net/tipc/socket.c	2009-10-08 00:34:07.000000000 -0600
+@@ -1654,7 +1654,7 @@ restart:
+  */
+ 
+ static int setsockopt(struct socket *sock,
+-		      int lvl, int opt, char __user *ov, int ol)
++		      int lvl, int opt, char __user *ov, unsigned int ol)
+ {
+ 	struct sock *sk = sock->sk;
+ 	struct tipc_port *tport = tipc_sk_port(sk);
+diff -urpN linux-source-2.6.26.orig/net/x25/af_x25.c linux-source-2.6.26/net/x25/af_x25.c
+--- linux-source-2.6.26.orig/net/x25/af_x25.c	2009-08-18 23:15:13.000000000 -0600
++++ linux-source-2.6.26/net/x25/af_x25.c	2009-10-08 00:34:07.000000000 -0600
+@@ -396,7 +396,7 @@ void x25_destroy_socket(struct sock *sk)
+  */
+ 
+ static int x25_setsockopt(struct socket *sock, int level, int optname,
+-			  char __user *optval, int optlen)
++			  char __user *optval, unsigned int optlen)
+ {
+ 	int opt;
+ 	struct sock *sk = sock->sk;

Modified: dists/lenny/linux-2.6-abi/debian/patches/series/18abi
==============================================================================
--- dists/lenny/linux-2.6-abi/debian/patches/series/18abi	Thu Oct  8 06:30:33 2009	(r14353)
+++ dists/lenny/linux-2.6-abi/debian/patches/series/18abi	Thu Oct  8 15:30:02 2009	(r14354)
@@ -4,3 +4,4 @@
 + bugfix/x86/add-a-synthetic-TSC_RELIABLE-feature-bit.patch
 + bugfix/x86/skip-verification-by-the-watchdog-for-TSC-clocksource.patch
 + bugfix/x86/vmware-look-for-DMI-string-in-product-serial-key.patch
++ bugfix/all/net-make-setsockopt-optlen-be-unsigned.patch



More information about the Kernel-svn-changes mailing list