Commit b7058842c940ad2c08dd829b21e5c92ebe3b8758

Authored by David S. Miller
1 parent eb1cf0f8f7

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@davemloft.net>

Showing 67 changed files with 149 additions and 153 deletions Side-by-side Diff

drivers/atm/ambassador.c
... ... @@ -1306,14 +1306,6 @@
1306 1306 return;
1307 1307 }
1308 1308  
1309   -/********** Set socket options for a VC **********/
1310   -
1311   -// int amb_getsockopt (struct atm_vcc * atm_vcc, int level, int optname, void * optval, int optlen);
1312   -
1313   -/********** Set socket options for a VC **********/
1314   -
1315   -// int amb_setsockopt (struct atm_vcc * atm_vcc, int level, int optname, void * optval, int optlen);
1316   -
1317 1309 /********** Send **********/
1318 1310  
1319 1311 static int amb_send (struct atm_vcc * atm_vcc, struct sk_buff * skb) {
... ... @@ -2031,7 +2031,7 @@
2031 2031  
2032 2032  
2033 2033 static int eni_setsockopt(struct atm_vcc *vcc,int level,int optname,
2034   - void __user *optval,int optlen)
  2034 + void __user *optval,unsigned int optlen)
2035 2035 {
2036 2036 return -EINVAL;
2037 2037 }
drivers/atm/firestream.c
... ... @@ -1244,7 +1244,7 @@
1244 1244  
1245 1245  
1246 1246 static int fs_setsockopt(struct atm_vcc *vcc,int level,int optname,
1247   - void __user *optval,int optlen)
  1247 + void __user *optval,unsigned int optlen)
1248 1248 {
1249 1249 func_enter ();
1250 1250 func_exit ();
drivers/atm/fore200e.c
... ... @@ -1795,7 +1795,7 @@
1795 1795  
1796 1796  
1797 1797 static int
1798   -fore200e_setsockopt(struct atm_vcc* vcc, int level, int optname, void __user *optval, int optlen)
  1798 +fore200e_setsockopt(struct atm_vcc* vcc, int level, int optname, void __user *optval, unsigned int optlen)
1799 1799 {
1800 1800 /* struct fore200e* fore200e = FORE200E_DEV(vcc->dev); */
1801 1801  
drivers/atm/horizon.c
... ... @@ -2590,7 +2590,7 @@
2590 2590 }
2591 2591  
2592 2592 static int hrz_setsockopt (struct atm_vcc * atm_vcc, int level, int optname,
2593   - void *optval, int optlen) {
  2593 + void *optval, unsigned int optlen) {
2594 2594 hrz_dev * dev = HRZ_DEV(atm_vcc->dev);
2595 2595 PRINTD (DBG_FLOW|DBG_VCC, "hrz_setsockopt");
2596 2596 switch (level) {
drivers/atm/iphase.c
... ... @@ -2862,7 +2862,7 @@
2862 2862 }
2863 2863  
2864 2864 static int ia_setsockopt(struct atm_vcc *vcc, int level, int optname,
2865   - void __user *optval, int optlen)
  2865 + void __user *optval, unsigned int optlen)
2866 2866 {
2867 2867 IF_EVENT(printk(">ia_setsockopt\n");)
2868 2868 return -EINVAL;
... ... @@ -1517,7 +1517,7 @@
1517 1517  
1518 1518  
1519 1519 static int zatm_setsockopt(struct atm_vcc *vcc,int level,int optname,
1520   - void __user *optval,int optlen)
  1520 + void __user *optval,unsigned int optlen)
1521 1521 {
1522 1522 return -EINVAL;
1523 1523 }
drivers/isdn/mISDN/socket.c
... ... @@ -415,7 +415,7 @@
415 415 }
416 416  
417 417 static int data_sock_setsockopt(struct socket *sock, int level, int optname,
418   - char __user *optval, int len)
  418 + char __user *optval, unsigned int len)
419 419 {
420 420 struct sock *sk = sock->sk;
421 421 int err = 0, opt = 0;
drivers/net/pppol2tp.c
... ... @@ -2179,7 +2179,7 @@
2179 2179 * session or the special tunnel type.
2180 2180 */
2181 2181 static int pppol2tp_setsockopt(struct socket *sock, int level, int optname,
2182   - char __user *optval, int optlen)
  2182 + char __user *optval, unsigned int optlen)
2183 2183 {
2184 2184 struct sock *sk = sock->sk;
2185 2185 struct pppol2tp_session *session = sk->sk_user_data;
include/linux/atmdev.h
... ... @@ -397,7 +397,7 @@
397 397 int (*getsockopt)(struct atm_vcc *vcc,int level,int optname,
398 398 void __user *optval,int optlen);
399 399 int (*setsockopt)(struct atm_vcc *vcc,int level,int optname,
400   - void __user *optval,int optlen);
  400 + void __user *optval,unsigned int optlen);
401 401 int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
402 402 int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
403 403 void (*phy_put)(struct atm_dev *dev,unsigned char value,
include/linux/mroute.h
... ... @@ -145,14 +145,14 @@
145 145 #endif
146 146  
147 147 #ifdef CONFIG_IP_MROUTE
148   -extern int ip_mroute_setsockopt(struct sock *, int, char __user *, int);
  148 +extern int ip_mroute_setsockopt(struct sock *, int, char __user *, unsigned int);
149 149 extern int ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
150 150 extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);
151 151 extern int ip_mr_init(void);
152 152 #else
153 153 static inline
154 154 int ip_mroute_setsockopt(struct sock *sock,
155   - int optname, char __user *optval, int optlen)
  155 + int optname, char __user *optval, unsigned int optlen)
156 156 {
157 157 return -ENOPROTOOPT;
158 158 }
include/linux/mroute6.h
... ... @@ -134,7 +134,7 @@
134 134 struct sock;
135 135  
136 136 #ifdef CONFIG_IPV6_MROUTE
137   -extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, int);
  137 +extern int ip6_mroute_setsockopt(struct sock *, int, char __user *, unsigned int);
138 138 extern int ip6_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
139 139 extern int ip6_mr_input(struct sk_buff *skb);
140 140 extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg);
... ... @@ -143,7 +143,7 @@
143 143 #else
144 144 static inline
145 145 int ip6_mroute_setsockopt(struct sock *sock,
146   - int optname, char __user *optval, int optlen)
  146 + int optname, char __user *optval, unsigned int optlen)
147 147 {
148 148 return -ENOPROTOOPT;
149 149 }
... ... @@ -178,11 +178,11 @@
178 178 int (*listen) (struct socket *sock, int len);
179 179 int (*shutdown) (struct socket *sock, int flags);
180 180 int (*setsockopt)(struct socket *sock, int level,
181   - int optname, char __user *optval, int optlen);
  181 + int optname, char __user *optval, unsigned int optlen);
182 182 int (*getsockopt)(struct socket *sock, int level,
183 183 int optname, char __user *optval, int __user *optlen);
184 184 int (*compat_setsockopt)(struct socket *sock, int level,
185   - int optname, char __user *optval, int optlen);
  185 + int optname, char __user *optval, unsigned int optlen);
186 186 int (*compat_getsockopt)(struct socket *sock, int level,
187 187 int optname, char __user *optval, int __user *optlen);
188 188 int (*sendmsg) (struct kiocb *iocb, struct socket *sock,
... ... @@ -256,7 +256,7 @@
256 256 extern int kernel_getsockopt(struct socket *sock, int level, int optname,
257 257 char *optval, int *optlen);
258 258 extern int kernel_setsockopt(struct socket *sock, int level, int optname,
259   - char *optval, int optlen);
  259 + char *optval, unsigned int optlen);
260 260 extern int kernel_sendpage(struct socket *sock, struct page *page, int offset,
261 261 size_t size, int flags);
262 262 extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
... ... @@ -313,7 +313,7 @@
313 313 SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \
314 314 SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \
315 315 SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \
316   - char __user *optval, int optlen), (sock, level, optname, optval, optlen)) \
  316 + char __user *optval, unsigned int optlen), (sock, level, optname, optval, optlen)) \
317 317 SOCKCALL_WRAP(name, getsockopt, (struct socket *sock, int level, int optname, \
318 318 char __user *optval, int __user *optlen), (sock, level, optname, optval, optlen)) \
319 319 SOCKCALL_WRAP(name, sendmsg, (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t len), \
include/linux/netfilter.h
... ... @@ -221,12 +221,12 @@
221 221  
222 222 /* Call setsockopt() */
223 223 int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
224   - int len);
  224 + unsigned int len);
225 225 int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
226 226 int *len);
227 227  
228 228 int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval,
229   - char __user *opt, int len);
  229 + char __user *opt, unsigned int len);
230 230 int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
231 231 char __user *opt, int *len);
232 232  
include/net/compat.h
... ... @@ -40,8 +40,8 @@
40 40  
41 41 extern int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, unsigned char *, int);
42 42  
43   -extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, int,
44   - int (*)(struct sock *, int, int, char __user *, int));
  43 +extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, unsigned int,
  44 + int (*)(struct sock *, int, int, char __user *, unsigned int));
45 45 extern int compat_mc_getsockopt(struct sock *, int, int, char __user *,
46 46 int __user *, int (*)(struct sock *, int, int, char __user *,
47 47 int __user *));
include/net/inet_connection_sock.h
... ... @@ -48,13 +48,13 @@
48 48 u16 net_header_len;
49 49 u16 sockaddr_len;
50 50 int (*setsockopt)(struct sock *sk, int level, int optname,
51   - char __user *optval, int optlen);
  51 + char __user *optval, unsigned int optlen);
52 52 int (*getsockopt)(struct sock *sk, int level, int optname,
53 53 char __user *optval, int __user *optlen);
54 54 #ifdef CONFIG_COMPAT
55 55 int (*compat_setsockopt)(struct sock *sk,
56 56 int level, int optname,
57   - char __user *optval, int optlen);
  57 + char __user *optval, unsigned int optlen);
58 58 int (*compat_getsockopt)(struct sock *sk,
59 59 int level, int optname,
60 60 char __user *optval, int __user *optlen);
... ... @@ -332,6 +332,6 @@
332 332 extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname,
333 333 char __user *optval, int __user *optlen);
334 334 extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname,
335   - char __user *optval, int optlen);
  335 + char __user *optval, unsigned int optlen);
336 336 #endif /* _INET_CONNECTION_SOCK_H */
... ... @@ -381,10 +381,10 @@
381 381 extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb);
382 382 extern int ip_cmsg_send(struct net *net,
383 383 struct msghdr *msg, struct ipcm_cookie *ipc);
384   -extern int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, int optlen);
  384 +extern int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval, unsigned int optlen);
385 385 extern int ip_getsockopt(struct sock *sk, int level, int optname, char __user *optval, int __user *optlen);
386 386 extern int compat_ip_setsockopt(struct sock *sk, int level,
387   - int optname, char __user *optval, int optlen);
  387 + int optname, char __user *optval, unsigned int optlen);
388 388 extern int compat_ip_getsockopt(struct sock *sk, int level,
389 389 int optname, char __user *optval, int __user *optlen);
390 390 extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *));
... ... @@ -550,7 +550,7 @@
550 550 extern int ipv6_setsockopt(struct sock *sk, int level,
551 551 int optname,
552 552 char __user *optval,
553   - int optlen);
  553 + unsigned int optlen);
554 554 extern int ipv6_getsockopt(struct sock *sk, int level,
555 555 int optname,
556 556 char __user *optval,
... ... @@ -559,7 +559,7 @@
559 559 int level,
560 560 int optname,
561 561 char __user *optval,
562   - int optlen);
  562 + unsigned int optlen);
563 563 extern int compat_ipv6_getsockopt(struct sock *sk,
564 564 int level,
565 565 int optname,
include/net/sctp/structs.h
... ... @@ -544,7 +544,7 @@
544 544 int level,
545 545 int optname,
546 546 char __user *optval,
547   - int optlen);
  547 + unsigned int optlen);
548 548 int (*getsockopt) (struct sock *sk,
549 549 int level,
550 550 int optname,
... ... @@ -554,7 +554,7 @@
554 554 int level,
555 555 int optname,
556 556 char __user *optval,
557   - int optlen);
  557 + unsigned int optlen);
558 558 int (*compat_getsockopt) (struct sock *sk,
559 559 int level,
560 560 int optname,
... ... @@ -624,7 +624,7 @@
624 624 void (*shutdown)(struct sock *sk, int how);
625 625 int (*setsockopt)(struct sock *sk, int level,
626 626 int optname, char __user *optval,
627   - int optlen);
  627 + unsigned int optlen);
628 628 int (*getsockopt)(struct sock *sk, int level,
629 629 int optname, char __user *optval,
630 630 int __user *option);
... ... @@ -632,7 +632,7 @@
632 632 int (*compat_setsockopt)(struct sock *sk,
633 633 int level,
634 634 int optname, char __user *optval,
635   - int optlen);
  635 + unsigned int optlen);
636 636 int (*compat_getsockopt)(struct sock *sk,
637 637 int level,
638 638 int optname, char __user *optval,
... ... @@ -951,7 +951,7 @@
951 951  
952 952 extern int sock_setsockopt(struct socket *sock, int level,
953 953 int op, char __user *optval,
954   - int optlen);
  954 + unsigned int optlen);
955 955  
956 956 extern int sock_getsockopt(struct socket *sock, int level,
957 957 int op, char __user *optval,
... ... @@ -993,7 +993,7 @@
993 993 extern int sock_no_getsockopt(struct socket *, int , int,
994 994 char __user *, int __user *);
995 995 extern int sock_no_setsockopt(struct socket *, int, int,
996   - char __user *, int);
  996 + char __user *, unsigned int);
997 997 extern int sock_no_sendmsg(struct kiocb *, struct socket *,
998 998 struct msghdr *, size_t);
999 999 extern int sock_no_recvmsg(struct kiocb *, struct socket *,
1000 1000  
... ... @@ -1015,11 +1015,11 @@
1015 1015 extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
1016 1016 struct msghdr *msg, size_t size, int flags);
1017 1017 extern int sock_common_setsockopt(struct socket *sock, int level, int optname,
1018   - char __user *optval, int optlen);
  1018 + char __user *optval, unsigned int optlen);
1019 1019 extern int compat_sock_common_getsockopt(struct socket *sock, int level,
1020 1020 int optname, char __user *optval, int __user *optlen);
1021 1021 extern int compat_sock_common_setsockopt(struct socket *sock, int level,
1022   - int optname, char __user *optval, int optlen);
  1022 + int optname, char __user *optval, unsigned int optlen);
1023 1023  
1024 1024 extern void sk_common_release(struct sock *sk);
1025 1025  
... ... @@ -394,13 +394,13 @@
394 394 int __user *optlen);
395 395 extern int tcp_setsockopt(struct sock *sk, int level,
396 396 int optname, char __user *optval,
397   - int optlen);
  397 + unsigned int optlen);
398 398 extern int compat_tcp_getsockopt(struct sock *sk,
399 399 int level, int optname,
400 400 char __user *optval, int __user *optlen);
401 401 extern int compat_tcp_setsockopt(struct sock *sk,
402 402 int level, int optname,
403   - char __user *optval, int optlen);
  403 + char __user *optval, unsigned int optlen);
404 404 extern void tcp_set_keepalive(struct sock *sk, int val);
405 405 extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk,
406 406 struct msghdr *msg,
... ... @@ -144,7 +144,7 @@
144 144 extern int udp_lib_getsockopt(struct sock *sk, int level, int optname,
145 145 char __user *optval, int __user *optlen);
146 146 extern int udp_lib_setsockopt(struct sock *sk, int level, int optname,
147   - char __user *optval, int optlen,
  147 + char __user *optval, unsigned int optlen,
148 148 int (*push_pending_frames)(struct sock *));
149 149  
150 150 extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
... ... @@ -679,7 +679,7 @@
679 679 }
680 680  
681 681 int vcc_setsockopt(struct socket *sock, int level, int optname,
682   - char __user *optval, int optlen)
  682 + char __user *optval, unsigned int optlen)
683 683 {
684 684 struct atm_vcc *vcc;
685 685 unsigned long value;
... ... @@ -21,7 +21,7 @@
21 21 int vcc_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
22 22 int vcc_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
23 23 int vcc_setsockopt(struct socket *sock, int level, int optname,
24   - char __user *optval, int optlen);
  24 + char __user *optval, unsigned int optlen);
25 25 int vcc_getsockopt(struct socket *sock, int level, int optname,
26 26 char __user *optval, int __user *optlen);
27 27  
... ... @@ -59,7 +59,7 @@
59 59 }
60 60  
61 61 static int pvc_setsockopt(struct socket *sock, int level, int optname,
62   - char __user *optval, int optlen)
  62 + char __user *optval, unsigned int optlen)
63 63 {
64 64 struct sock *sk = sock->sk;
65 65 int error;
... ... @@ -446,7 +446,7 @@
446 446  
447 447  
448 448 static int svc_setsockopt(struct socket *sock, int level, int optname,
449   - char __user *optval, int optlen)
  449 + char __user *optval, unsigned int optlen)
450 450 {
451 451 struct sock *sk = sock->sk;
452 452 struct atm_vcc *vcc = ATM_SD(sock);
... ... @@ -534,7 +534,7 @@
534 534 */
535 535  
536 536 static int ax25_setsockopt(struct socket *sock, int level, int optname,
537   - char __user *optval, int optlen)
  537 + char __user *optval, unsigned int optlen)
538 538 {
539 539 struct sock *sk = sock->sk;
540 540 ax25_cb *ax25;
net/bluetooth/hci_sock.c
... ... @@ -466,7 +466,7 @@
466 466 goto done;
467 467 }
468 468  
469   -static int hci_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int len)
  469 +static int hci_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int len)
470 470 {
471 471 struct hci_ufilter uf = { .opcode = 0 };
472 472 struct sock *sk = sock->sk;
net/bluetooth/l2cap.c
... ... @@ -1698,7 +1698,7 @@
1698 1698 return bt_sock_recvmsg(iocb, sock, msg, len, flags);
1699 1699 }
1700 1700  
1701   -static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, int optlen)
  1701 +static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
1702 1702 {
1703 1703 struct sock *sk = sock->sk;
1704 1704 struct l2cap_options opts;
... ... @@ -1755,7 +1755,7 @@
1755 1755 return err;
1756 1756 }
1757 1757  
1758   -static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
  1758 +static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
1759 1759 {
1760 1760 struct sock *sk = sock->sk;
1761 1761 struct bt_security sec;
net/bluetooth/rfcomm/sock.c
... ... @@ -730,7 +730,7 @@
730 730 return copied ? : err;
731 731 }
732 732  
733   -static int rfcomm_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, int optlen)
  733 +static int rfcomm_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
734 734 {
735 735 struct sock *sk = sock->sk;
736 736 int err = 0;
... ... @@ -766,7 +766,7 @@
766 766 return err;
767 767 }
768 768  
769   -static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
  769 +static int rfcomm_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
770 770 {
771 771 struct sock *sk = sock->sk;
772 772 struct bt_security sec;
... ... @@ -644,7 +644,7 @@
644 644 return err;
645 645 }
646 646  
647   -static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
  647 +static int sco_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
648 648 {
649 649 struct sock *sk = sock->sk;
650 650 int err = 0;
... ... @@ -411,7 +411,7 @@
411 411 }
412 412  
413 413 static int raw_setsockopt(struct socket *sock, int level, int optname,
414   - char __user *optval, int optlen)
  414 + char __user *optval, unsigned int optlen)
415 415 {
416 416 struct sock *sk = sock->sk;
417 417 struct raw_sock *ro = raw_sk(sk);
... ... @@ -331,7 +331,7 @@
331 331 };
332 332  
333 333 static int do_set_attach_filter(struct socket *sock, int level, int optname,
334   - char __user *optval, int optlen)
  334 + char __user *optval, unsigned int optlen)
335 335 {
336 336 struct compat_sock_fprog __user *fprog32 = (struct compat_sock_fprog __user *)optval;
337 337 struct sock_fprog __user *kfprog = compat_alloc_user_space(sizeof(struct sock_fprog));
... ... @@ -351,7 +351,7 @@
351 351 }
352 352  
353 353 static int do_set_sock_timeout(struct socket *sock, int level,
354   - int optname, char __user *optval, int optlen)
  354 + int optname, char __user *optval, unsigned int optlen)
355 355 {
356 356 struct compat_timeval __user *up = (struct compat_timeval __user *) optval;
357 357 struct timeval ktime;
... ... @@ -373,7 +373,7 @@
373 373 }
374 374  
375 375 static int compat_sock_setsockopt(struct socket *sock, int level, int optname,
376   - char __user *optval, int optlen)
  376 + char __user *optval, unsigned int optlen)
377 377 {
378 378 if (optname == SO_ATTACH_FILTER)
379 379 return do_set_attach_filter(sock, level, optname,
... ... @@ -385,7 +385,7 @@
385 385 }
386 386  
387 387 asmlinkage long compat_sys_setsockopt(int fd, int level, int optname,
388   - char __user *optval, int optlen)
  388 + char __user *optval, unsigned int optlen)
389 389 {
390 390 int err;
391 391 struct socket *sock;
... ... @@ -558,8 +558,8 @@
558 558  
559 559  
560 560 int compat_mc_setsockopt(struct sock *sock, int level, int optname,
561   - char __user *optval, int optlen,
562   - int (*setsockopt)(struct sock *,int,int,char __user *,int))
  561 + char __user *optval, unsigned int optlen,
  562 + int (*setsockopt)(struct sock *,int,int,char __user *,unsigned int))
563 563 {
564 564 char __user *koptval = optval;
565 565 int koptlen = optlen;
... ... @@ -446,7 +446,7 @@
446 446 */
447 447  
448 448 int sock_setsockopt(struct socket *sock, int level, int optname,
449   - char __user *optval, int optlen)
  449 + char __user *optval, unsigned int optlen)
450 450 {
451 451 struct sock *sk = sock->sk;
452 452 int val;
... ... @@ -1697,7 +1697,7 @@
1697 1697 EXPORT_SYMBOL(sock_no_shutdown);
1698 1698  
1699 1699 int sock_no_setsockopt(struct socket *sock, int level, int optname,
1700   - char __user *optval, int optlen)
  1700 + char __user *optval, unsigned int optlen)
1701 1701 {
1702 1702 return -EOPNOTSUPP;
1703 1703 }
... ... @@ -2018,7 +2018,7 @@
2018 2018 * Set socket options on an inet socket.
2019 2019 */
2020 2020 int sock_common_setsockopt(struct socket *sock, int level, int optname,
2021   - char __user *optval, int optlen)
  2021 + char __user *optval, unsigned int optlen)
2022 2022 {
2023 2023 struct sock *sk = sock->sk;
2024 2024  
... ... @@ -2028,7 +2028,7 @@
2028 2028  
2029 2029 #ifdef CONFIG_COMPAT
2030 2030 int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
2031   - char __user *optval, int optlen)
  2031 + char __user *optval, unsigned int optlen)
2032 2032 {
2033 2033 struct sock *sk = sock->sk;
2034 2034  
... ... @@ -290,14 +290,14 @@
290 290 extern int dccp_getsockopt(struct sock *sk, int level, int optname,
291 291 char __user *optval, int __user *optlen);
292 292 extern int dccp_setsockopt(struct sock *sk, int level, int optname,
293   - char __user *optval, int optlen);
  293 + char __user *optval, unsigned int optlen);
294 294 #ifdef CONFIG_COMPAT
295 295 extern int compat_dccp_getsockopt(struct sock *sk,
296 296 int level, int optname,
297 297 char __user *optval, int __user *optlen);
298 298 extern int compat_dccp_setsockopt(struct sock *sk,
299 299 int level, int optname,
300   - char __user *optval, int optlen);
  300 + char __user *optval, unsigned int optlen);
301 301 #endif
302 302 extern int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg);
303 303 extern int dccp_sendmsg(struct kiocb *iocb, struct sock *sk,
... ... @@ -393,7 +393,7 @@
393 393 EXPORT_SYMBOL_GPL(dccp_ioctl);
394 394  
395 395 static int dccp_setsockopt_service(struct sock *sk, const __be32 service,
396   - char __user *optval, int optlen)
  396 + char __user *optval, unsigned int optlen)
397 397 {
398 398 struct dccp_sock *dp = dccp_sk(sk);
399 399 struct dccp_service_list *sl = NULL;
... ... @@ -464,7 +464,7 @@
464 464 }
465 465  
466 466 static int dccp_setsockopt_ccid(struct sock *sk, int type,
467   - char __user *optval, int optlen)
  467 + char __user *optval, unsigned int optlen)
468 468 {
469 469 u8 *val;
470 470 int rc = 0;
... ... @@ -494,7 +494,7 @@
494 494 }
495 495  
496 496 static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
497   - char __user *optval, int optlen)
  497 + char __user *optval, unsigned int optlen)
498 498 {
499 499 struct dccp_sock *dp = dccp_sk(sk);
500 500 int val, err = 0;
... ... @@ -546,7 +546,7 @@
546 546 }
547 547  
548 548 int dccp_setsockopt(struct sock *sk, int level, int optname,
549   - char __user *optval, int optlen)
  549 + char __user *optval, unsigned int optlen)
550 550 {
551 551 if (level != SOL_DCCP)
552 552 return inet_csk(sk)->icsk_af_ops->setsockopt(sk, level,
... ... @@ -559,7 +559,7 @@
559 559  
560 560 #ifdef CONFIG_COMPAT
561 561 int compat_dccp_setsockopt(struct sock *sk, int level, int optname,
562   - char __user *optval, int optlen)
  562 + char __user *optval, unsigned int optlen)
563 563 {
564 564 if (level != SOL_DCCP)
565 565 return inet_csk_compat_setsockopt(sk, level, optname,
net/decnet/af_decnet.c
... ... @@ -157,7 +157,7 @@
157 157 static struct hlist_head dn_wild_sk;
158 158 static atomic_t decnet_memory_allocated;
159 159  
160   -static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen, int flags);
  160 +static int __dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen, int flags);
161 161 static int __dn_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen, int flags);
162 162  
163 163 static struct hlist_head *dn_find_list(struct sock *sk)
... ... @@ -1325,7 +1325,7 @@
1325 1325 return err;
1326 1326 }
1327 1327  
1328   -static int dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
  1328 +static int dn_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
1329 1329 {
1330 1330 struct sock *sk = sock->sk;
1331 1331 int err;
... ... @@ -1337,7 +1337,7 @@
1337 1337 return err;
1338 1338 }
1339 1339  
1340   -static int __dn_setsockopt(struct socket *sock, int level,int optname, char __user *optval, int optlen, int flags)
  1340 +static int __dn_setsockopt(struct socket *sock, int level,int optname, char __user *optval, unsigned int optlen, int flags)
1341 1341 {
1342 1342 struct sock *sk = sock->sk;
1343 1343 struct dn_scp *scp = DN_SK(sk);
net/ieee802154/dgram.c
... ... @@ -414,7 +414,7 @@
414 414 }
415 415  
416 416 static int dgram_setsockopt(struct sock *sk, int level, int optname,
417   - char __user *optval, int optlen)
  417 + char __user *optval, unsigned int optlen)
418 418 {
419 419 struct dgram_sock *ro = dgram_sk(sk);
420 420 int val;
net/ieee802154/raw.c
... ... @@ -244,7 +244,7 @@
244 244 }
245 245  
246 246 static int raw_setsockopt(struct sock *sk, int level, int optname,
247   - char __user *optval, int optlen)
  247 + char __user *optval, unsigned int optlen)
248 248 {
249 249 return -EOPNOTSUPP;
250 250 }
net/ipv4/inet_connection_sock.c
... ... @@ -714,7 +714,7 @@
714 714 EXPORT_SYMBOL_GPL(inet_csk_compat_getsockopt);
715 715  
716 716 int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname,
717   - char __user *optval, int optlen)
  717 + char __user *optval, unsigned int optlen)
718 718 {
719 719 const struct inet_connection_sock *icsk = inet_csk(sk);
720 720  
net/ipv4/ip_sockglue.c
... ... @@ -440,7 +440,7 @@
440 440 */
441 441  
442 442 static int do_ip_setsockopt(struct sock *sk, int level,
443   - int optname, char __user *optval, int optlen)
  443 + int optname, char __user *optval, unsigned int optlen)
444 444 {
445 445 struct inet_sock *inet = inet_sk(sk);
446 446 int val = 0, err;
... ... @@ -950,7 +950,7 @@
950 950 }
951 951  
952 952 int ip_setsockopt(struct sock *sk, int level,
953   - int optname, char __user *optval, int optlen)
  953 + int optname, char __user *optval, unsigned int optlen)
954 954 {
955 955 int err;
956 956  
... ... @@ -975,7 +975,7 @@
975 975  
976 976 #ifdef CONFIG_COMPAT
977 977 int compat_ip_setsockopt(struct sock *sk, int level, int optname,
978   - char __user *optval, int optlen)
  978 + char __user *optval, unsigned int optlen)
979 979 {
980 980 int err;
981 981  
... ... @@ -931,7 +931,7 @@
931 931 * MOSPF/PIM router set up we can clean this up.
932 932 */
933 933  
934   -int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, int optlen)
  934 +int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsigned int optlen)
935 935 {
936 936 int ret;
937 937 struct vifctl vif;
... ... @@ -741,7 +741,7 @@
741 741 }
742 742  
743 743 static int do_raw_setsockopt(struct sock *sk, int level, int optname,
744   - char __user *optval, int optlen)
  744 + char __user *optval, unsigned int optlen)
745 745 {
746 746 if (optname == ICMP_FILTER) {
747 747 if (inet_sk(sk)->num != IPPROTO_ICMP)
... ... @@ -753,7 +753,7 @@
753 753 }
754 754  
755 755 static int raw_setsockopt(struct sock *sk, int level, int optname,
756   - char __user *optval, int optlen)
  756 + char __user *optval, unsigned int optlen)
757 757 {
758 758 if (level != SOL_RAW)
759 759 return ip_setsockopt(sk, level, optname, optval, optlen);
... ... @@ -762,7 +762,7 @@
762 762  
763 763 #ifdef CONFIG_COMPAT
764 764 static int compat_raw_setsockopt(struct sock *sk, int level, int optname,
765   - char __user *optval, int optlen)
  765 + char __user *optval, unsigned int optlen)
766 766 {
767 767 if (level != SOL_RAW)
768 768 return compat_ip_setsockopt(sk, level, optname, optval, optlen);
... ... @@ -2032,7 +2032,7 @@
2032 2032 * Socket option code for TCP.
2033 2033 */
2034 2034 static int do_tcp_setsockopt(struct sock *sk, int level,
2035   - int optname, char __user *optval, int optlen)
  2035 + int optname, char __user *optval, unsigned int optlen)
2036 2036 {
2037 2037 struct tcp_sock *tp = tcp_sk(sk);
2038 2038 struct inet_connection_sock *icsk = inet_csk(sk);
... ... @@ -2220,7 +2220,7 @@
2220 2220 }
2221 2221  
2222 2222 int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
2223   - int optlen)
  2223 + unsigned int optlen)
2224 2224 {
2225 2225 struct inet_connection_sock *icsk = inet_csk(sk);
2226 2226  
... ... @@ -2232,7 +2232,7 @@
2232 2232  
2233 2233 #ifdef CONFIG_COMPAT
2234 2234 int compat_tcp_setsockopt(struct sock *sk, int level, int optname,
2235   - char __user *optval, int optlen)
  2235 + char __user *optval, unsigned int optlen)
2236 2236 {
2237 2237 if (level != SOL_TCP)
2238 2238 return inet_csk_compat_setsockopt(sk, level, optname,
... ... @@ -1359,7 +1359,7 @@
1359 1359 * Socket option code for UDP
1360 1360 */
1361 1361 int udp_lib_setsockopt(struct sock *sk, int level, int optname,
1362   - char __user *optval, int optlen,
  1362 + char __user *optval, unsigned int optlen,
1363 1363 int (*push_pending_frames)(struct sock *))
1364 1364 {
1365 1365 struct udp_sock *up = udp_sk(sk);
... ... @@ -1441,7 +1441,7 @@
1441 1441 EXPORT_SYMBOL(udp_lib_setsockopt);
1442 1442  
1443 1443 int udp_setsockopt(struct sock *sk, int level, int optname,
1444   - char __user *optval, int optlen)
  1444 + char __user *optval, unsigned int optlen)
1445 1445 {
1446 1446 if (level == SOL_UDP || level == SOL_UDPLITE)
1447 1447 return udp_lib_setsockopt(sk, level, optname, optval, optlen,
... ... @@ -1451,7 +1451,7 @@
1451 1451  
1452 1452 #ifdef CONFIG_COMPAT
1453 1453 int compat_udp_setsockopt(struct sock *sk, int level, int optname,
1454   - char __user *optval, int optlen)
  1454 + char __user *optval, unsigned int optlen)
1455 1455 {
1456 1456 if (level == SOL_UDP || level == SOL_UDPLITE)
1457 1457 return udp_lib_setsockopt(sk, level, optname, optval, optlen,
... ... @@ -11,13 +11,13 @@
11 11 extern int udp_v4_get_port(struct sock *sk, unsigned short snum);
12 12  
13 13 extern int udp_setsockopt(struct sock *sk, int level, int optname,
14   - char __user *optval, int optlen);
  14 + char __user *optval, unsigned int optlen);
15 15 extern int udp_getsockopt(struct sock *sk, int level, int optname,
16 16 char __user *optval, int __user *optlen);
17 17  
18 18 #ifdef CONFIG_COMPAT
19 19 extern int compat_udp_setsockopt(struct sock *sk, int level, int optname,
20   - char __user *optval, int optlen);
  20 + char __user *optval, unsigned int optlen);
21 21 extern int compat_udp_getsockopt(struct sock *sk, int level, int optname,
22 22 char __user *optval, int __user *optlen);
23 23 #endif
... ... @@ -1281,7 +1281,7 @@
1281 1281 * MOSPF/PIM router set up we can clean this up.
1282 1282 */
1283 1283  
1284   -int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, int optlen)
  1284 +int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsigned int optlen)
1285 1285 {
1286 1286 int ret;
1287 1287 struct mif6ctl vif;
net/ipv6/ipv6_sockglue.c
... ... @@ -123,7 +123,7 @@
123 123 }
124 124  
125 125 static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
126   - char __user *optval, int optlen)
  126 + char __user *optval, unsigned int optlen)
127 127 {
128 128 struct ipv6_pinfo *np = inet6_sk(sk);
129 129 struct net *net = sock_net(sk);
... ... @@ -773,7 +773,7 @@
773 773 }
774 774  
775 775 int ipv6_setsockopt(struct sock *sk, int level, int optname,
776   - char __user *optval, int optlen)
  776 + char __user *optval, unsigned int optlen)
777 777 {
778 778 int err;
779 779  
... ... @@ -801,7 +801,7 @@
801 801  
802 802 #ifdef CONFIG_COMPAT
803 803 int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
804   - char __user *optval, int optlen)
  804 + char __user *optval, unsigned int optlen)
805 805 {
806 806 int err;
807 807  
... ... @@ -957,7 +957,7 @@
957 957  
958 958  
959 959 static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
960   - char __user *optval, int optlen)
  960 + char __user *optval, unsigned int optlen)
961 961 {
962 962 struct raw6_sock *rp = raw6_sk(sk);
963 963 int val;
... ... @@ -1000,7 +1000,7 @@
1000 1000 }
1001 1001  
1002 1002 static int rawv6_setsockopt(struct sock *sk, int level, int optname,
1003   - char __user *optval, int optlen)
  1003 + char __user *optval, unsigned int optlen)
1004 1004 {
1005 1005 switch(level) {
1006 1006 case SOL_RAW:
... ... @@ -1024,7 +1024,7 @@
1024 1024  
1025 1025 #ifdef CONFIG_COMPAT
1026 1026 static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname,
1027   - char __user *optval, int optlen)
  1027 + char __user *optval, unsigned int optlen)
1028 1028 {
1029 1029 switch (level) {
1030 1030 case SOL_RAW:
... ... @@ -1044,7 +1044,7 @@
1044 1044 * Socket option code for UDP
1045 1045 */
1046 1046 int udpv6_setsockopt(struct sock *sk, int level, int optname,
1047   - char __user *optval, int optlen)
  1047 + char __user *optval, unsigned int optlen)
1048 1048 {
1049 1049 if (level == SOL_UDP || level == SOL_UDPLITE)
1050 1050 return udp_lib_setsockopt(sk, level, optname, optval, optlen,
... ... @@ -1054,7 +1054,7 @@
1054 1054  
1055 1055 #ifdef CONFIG_COMPAT
1056 1056 int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
1057   - char __user *optval, int optlen)
  1057 + char __user *optval, unsigned int optlen)
1058 1058 {
1059 1059 if (level == SOL_UDP || level == SOL_UDPLITE)
1060 1060 return udp_lib_setsockopt(sk, level, optname, optval, optlen,
... ... @@ -16,10 +16,10 @@
16 16 extern int udpv6_getsockopt(struct sock *sk, int level, int optname,
17 17 char __user *optval, int __user *optlen);
18 18 extern int udpv6_setsockopt(struct sock *sk, int level, int optname,
19   - char __user *optval, int optlen);
  19 + char __user *optval, unsigned int optlen);
20 20 #ifdef CONFIG_COMPAT
21 21 extern int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
22   - char __user *optval, int optlen);
  22 + char __user *optval, unsigned int optlen);
23 23 extern int compat_udpv6_getsockopt(struct sock *sk, int level, int optname,
24 24 char __user *optval, int __user *optlen);
25 25 #endif
... ... @@ -1292,7 +1292,7 @@
1292 1292 * socket object. */
1293 1293  
1294 1294 static int ipx_setsockopt(struct socket *sock, int level, int optname,
1295   - char __user *optval, int optlen)
  1295 + char __user *optval, unsigned int optlen)
1296 1296 {
1297 1297 struct sock *sk = sock->sk;
1298 1298 int opt;
... ... @@ -1826,7 +1826,7 @@
1826 1826 *
1827 1827 */
1828 1828 static int irda_setsockopt(struct socket *sock, int level, int optname,
1829   - char __user *optval, int optlen)
  1829 + char __user *optval, unsigned int optlen)
1830 1830 {
1831 1831 struct sock *sk = sock->sk;
1832 1832 struct irda_sock *self = irda_sk(sk);
... ... @@ -1387,7 +1387,7 @@
1387 1387  
1388 1388 /* getsockopt and setsockopt */
1389 1389 static int iucv_sock_setsockopt(struct socket *sock, int level, int optname,
1390   - char __user *optval, int optlen)
  1390 + char __user *optval, unsigned int optlen)
1391 1391 {
1392 1392 struct sock *sk = sock->sk;
1393 1393 struct iucv_sock *iucv = iucv_sk(sk);
... ... @@ -973,7 +973,7 @@
973 973 * Set various connection specific parameters.
974 974 */
975 975 static int llc_ui_setsockopt(struct socket *sock, int level, int optname,
976   - char __user *optval, int optlen)
  976 + char __user *optval, unsigned int optlen)
977 977 {
978 978 struct sock *sk = sock->sk;
979 979 struct llc_sock *llc = llc_sk(sk);
net/netfilter/nf_sockopt.c
... ... @@ -113,7 +113,7 @@
113 113 }
114 114  
115 115 int nf_setsockopt(struct sock *sk, u_int8_t pf, int val, char __user *opt,
116   - int len)
  116 + unsigned int len)
117 117 {
118 118 return nf_sockopt(sk, pf, val, opt, &len, 0);
119 119 }
... ... @@ -154,7 +154,7 @@
154 154 }
155 155  
156 156 int compat_nf_setsockopt(struct sock *sk, u_int8_t pf,
157   - int val, char __user *opt, int len)
  157 + int val, char __user *opt, unsigned int len)
158 158 {
159 159 return compat_nf_sockopt(sk, pf, val, opt, &len, 0);
160 160 }
net/netlink/af_netlink.c
... ... @@ -1150,7 +1150,7 @@
1150 1150 }
1151 1151  
1152 1152 static int netlink_setsockopt(struct socket *sock, int level, int optname,
1153   - char __user *optval, int optlen)
  1153 + char __user *optval, unsigned int optlen)
1154 1154 {
1155 1155 struct sock *sk = sock->sk;
1156 1156 struct netlink_sock *nlk = nlk_sk(sk);
net/netrom/af_netrom.c
... ... @@ -301,7 +301,7 @@
301 301 */
302 302  
303 303 static int nr_setsockopt(struct socket *sock, int level, int optname,
304   - char __user *optval, int optlen)
  304 + char __user *optval, unsigned int optlen)
305 305 {
306 306 struct sock *sk = sock->sk;
307 307 struct nr_sock *nr = nr_sk(sk);
net/packet/af_packet.c
... ... @@ -1701,7 +1701,7 @@
1701 1701 }
1702 1702  
1703 1703 static int
1704   -packet_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
  1704 +packet_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
1705 1705 {
1706 1706 struct sock *sk = sock->sk;
1707 1707 struct packet_sock *po = pkt_sk(sk);
... ... @@ -742,7 +742,7 @@
742 742 }
743 743  
744 744 static int pep_setsockopt(struct sock *sk, int level, int optname,
745   - char __user *optval, int optlen)
  745 + char __user *optval, unsigned int optlen)
746 746 {
747 747 struct pep_sock *pn = pep_sk(sk);
748 748 int val = 0, err = 0;
... ... @@ -248,7 +248,7 @@
248 248 }
249 249  
250 250 static int rds_setsockopt(struct socket *sock, int level, int optname,
251   - char __user *optval, int optlen)
  251 + char __user *optval, unsigned int optlen)
252 252 {
253 253 struct rds_sock *rs = rds_sk_to_rs(sock->sk);
254 254 int ret;
... ... @@ -370,7 +370,7 @@
370 370 */
371 371  
372 372 static int rose_setsockopt(struct socket *sock, int level, int optname,
373   - char __user *optval, int optlen)
  373 + char __user *optval, unsigned int optlen)
374 374 {
375 375 struct sock *sk = sock->sk;
376 376 struct rose_sock *rose = rose_sk(sk);
net/rxrpc/af_rxrpc.c
... ... @@ -507,7 +507,7 @@
507 507 * set RxRPC socket options
508 508 */
509 509 static int rxrpc_setsockopt(struct socket *sock, int level, int optname,
510   - char __user *optval, int optlen)
  510 + char __user *optval, unsigned int optlen)
511 511 {
512 512 struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
513 513 unsigned min_sec_level;
... ... @@ -2027,7 +2027,8 @@
2027 2027 * instead a error will be indicated to the user.
2028 2028 */
2029 2029 static int sctp_setsockopt_disable_fragments(struct sock *sk,
2030   - char __user *optval, int optlen)
  2030 + char __user *optval,
  2031 + unsigned int optlen)
2031 2032 {
2032 2033 int val;
2033 2034  
... ... @@ -2043,7 +2044,7 @@
2043 2044 }
2044 2045  
2045 2046 static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
2046   - int optlen)
  2047 + unsigned int optlen)
2047 2048 {
2048 2049 if (optlen > sizeof(struct sctp_event_subscribe))
2049 2050 return -EINVAL;
... ... @@ -2064,7 +2065,7 @@
2064 2065 * association is closed.
2065 2066 */
2066 2067 static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,
2067   - int optlen)
  2068 + unsigned int optlen)
2068 2069 {
2069 2070 struct sctp_sock *sp = sctp_sk(sk);
2070 2071  
... ... @@ -2318,7 +2319,8 @@
2318 2319 }
2319 2320  
2320 2321 static int sctp_setsockopt_peer_addr_params(struct sock *sk,
2321   - char __user *optval, int optlen)
  2322 + char __user *optval,
  2323 + unsigned int optlen)
2322 2324 {
2323 2325 struct sctp_paddrparams params;
2324 2326 struct sctp_transport *trans = NULL;
... ... @@ -2430,7 +2432,7 @@
2430 2432 */
2431 2433  
2432 2434 static int sctp_setsockopt_delayed_ack(struct sock *sk,
2433   - char __user *optval, int optlen)
  2435 + char __user *optval, unsigned int optlen)
2434 2436 {
2435 2437 struct sctp_sack_info params;
2436 2438 struct sctp_transport *trans = NULL;
... ... @@ -2546,7 +2548,7 @@
2546 2548 * by the change). With TCP-style sockets, this option is inherited by
2547 2549 * sockets derived from a listener socket.
2548 2550 */
2549   -static int sctp_setsockopt_initmsg(struct sock *sk, char __user *optval, int optlen)
  2551 +static int sctp_setsockopt_initmsg(struct sock *sk, char __user *optval, unsigned int optlen)
2550 2552 {
2551 2553 struct sctp_initmsg sinit;
2552 2554 struct sctp_sock *sp = sctp_sk(sk);
... ... @@ -2583,7 +2585,8 @@
2583 2585 * to this call if the caller is using the UDP model.
2584 2586 */
2585 2587 static int sctp_setsockopt_default_send_param(struct sock *sk,
2586   - char __user *optval, int optlen)
  2588 + char __user *optval,
  2589 + unsigned int optlen)
2587 2590 {
2588 2591 struct sctp_sndrcvinfo info;
2589 2592 struct sctp_association *asoc;
... ... @@ -2622,7 +2625,7 @@
2622 2625 * association peer's addresses.
2623 2626 */
2624 2627 static int sctp_setsockopt_primary_addr(struct sock *sk, char __user *optval,
2625   - int optlen)
  2628 + unsigned int optlen)
2626 2629 {
2627 2630 struct sctp_prim prim;
2628 2631 struct sctp_transport *trans;
... ... @@ -2651,7 +2654,7 @@
2651 2654 * integer boolean flag.
2652 2655 */
2653 2656 static int sctp_setsockopt_nodelay(struct sock *sk, char __user *optval,
2654   - int optlen)
  2657 + unsigned int optlen)
2655 2658 {
2656 2659 int val;
2657 2660  
... ... @@ -2676,7 +2679,8 @@
2676 2679 * be changed.
2677 2680 *
2678 2681 */
2679   -static int sctp_setsockopt_rtoinfo(struct sock *sk, char __user *optval, int optlen) {
  2682 +static int sctp_setsockopt_rtoinfo(struct sock *sk, char __user *optval, unsigned int optlen)
  2683 +{
2680 2684 struct sctp_rtoinfo rtoinfo;
2681 2685 struct sctp_association *asoc;
2682 2686  
... ... @@ -2728,7 +2732,7 @@
2728 2732 * See [SCTP] for more information.
2729 2733 *
2730 2734 */
2731   -static int sctp_setsockopt_associnfo(struct sock *sk, char __user *optval, int optlen)
  2735 +static int sctp_setsockopt_associnfo(struct sock *sk, char __user *optval, unsigned int optlen)
2732 2736 {
2733 2737  
2734 2738 struct sctp_assocparams assocparams;
... ... @@ -2800,7 +2804,7 @@
2800 2804 * addresses and a user will receive both PF_INET6 and PF_INET type
2801 2805 * addresses on the socket.
2802 2806 */
2803   -static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, int optlen)
  2807 +static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, unsigned int optlen)
2804 2808 {
2805 2809 int val;
2806 2810 struct sctp_sock *sp = sctp_sk(sk);
... ... @@ -2844,7 +2848,7 @@
2844 2848 * changed (effecting future associations only).
2845 2849 * assoc_value: This parameter specifies the maximum size in bytes.
2846 2850 */
2847   -static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, int optlen)
  2851 +static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int optlen)
2848 2852 {
2849 2853 struct sctp_assoc_value params;
2850 2854 struct sctp_association *asoc;
... ... @@ -2899,7 +2903,7 @@
2899 2903 * set primary request:
2900 2904 */
2901 2905 static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optval,
2902   - int optlen)
  2906 + unsigned int optlen)
2903 2907 {
2904 2908 struct sctp_sock *sp;
2905 2909 struct sctp_endpoint *ep;
... ... @@ -2950,7 +2954,7 @@
2950 2954 }
2951 2955  
2952 2956 static int sctp_setsockopt_adaptation_layer(struct sock *sk, char __user *optval,
2953   - int optlen)
  2957 + unsigned int optlen)
2954 2958 {
2955 2959 struct sctp_setadaptation adaptation;
2956 2960  
... ... @@ -2979,7 +2983,7 @@
2979 2983 * saved with outbound messages.
2980 2984 */
2981 2985 static int sctp_setsockopt_context(struct sock *sk, char __user *optval,
2982   - int optlen)
  2986 + unsigned int optlen)
2983 2987 {
2984 2988 struct sctp_assoc_value params;
2985 2989 struct sctp_sock *sp;
... ... @@ -3030,7 +3034,7 @@
3030 3034 */
3031 3035 static int sctp_setsockopt_fragment_interleave(struct sock *sk,
3032 3036 char __user *optval,
3033   - int optlen)
  3037 + unsigned int optlen)
3034 3038 {
3035 3039 int val;
3036 3040  
... ... @@ -3063,7 +3067,7 @@
3063 3067 */
3064 3068 static int sctp_setsockopt_partial_delivery_point(struct sock *sk,
3065 3069 char __user *optval,
3066   - int optlen)
  3070 + unsigned int optlen)
3067 3071 {
3068 3072 u32 val;
3069 3073  
... ... @@ -3096,7 +3100,7 @@
3096 3100 */
3097 3101 static int sctp_setsockopt_maxburst(struct sock *sk,
3098 3102 char __user *optval,
3099   - int optlen)
  3103 + unsigned int optlen)
3100 3104 {
3101 3105 struct sctp_assoc_value params;
3102 3106 struct sctp_sock *sp;
... ... @@ -3140,8 +3144,8 @@
3140 3144 * will only effect future associations on the socket.
3141 3145 */
3142 3146 static int sctp_setsockopt_auth_chunk(struct sock *sk,
3143   - char __user *optval,
3144   - int optlen)
  3147 + char __user *optval,
  3148 + unsigned int optlen)
3145 3149 {
3146 3150 struct sctp_authchunk val;
3147 3151  
... ... @@ -3172,8 +3176,8 @@
3172 3176 * endpoint requires the peer to use.
3173 3177 */
3174 3178 static int sctp_setsockopt_hmac_ident(struct sock *sk,
3175   - char __user *optval,
3176   - int optlen)
  3179 + char __user *optval,
  3180 + unsigned int optlen)
3177 3181 {
3178 3182 struct sctp_hmacalgo *hmacs;
3179 3183 u32 idents;
... ... @@ -3215,7 +3219,7 @@
3215 3219 */
3216 3220 static int sctp_setsockopt_auth_key(struct sock *sk,
3217 3221 char __user *optval,
3218   - int optlen)
  3222 + unsigned int optlen)
3219 3223 {
3220 3224 struct sctp_authkey *authkey;
3221 3225 struct sctp_association *asoc;
... ... @@ -3260,8 +3264,8 @@
3260 3264 * the association shared key.
3261 3265 */
3262 3266 static int sctp_setsockopt_active_key(struct sock *sk,
3263   - char __user *optval,
3264   - int optlen)
  3267 + char __user *optval,
  3268 + unsigned int optlen)
3265 3269 {
3266 3270 struct sctp_authkeyid val;
3267 3271 struct sctp_association *asoc;
... ... @@ -3288,8 +3292,8 @@
3288 3292 * This set option will delete a shared secret key from use.
3289 3293 */
3290 3294 static int sctp_setsockopt_del_key(struct sock *sk,
3291   - char __user *optval,
3292   - int optlen)
  3295 + char __user *optval,
  3296 + unsigned int optlen)
3293 3297 {
3294 3298 struct sctp_authkeyid val;
3295 3299 struct sctp_association *asoc;
... ... @@ -3332,7 +3336,7 @@
3332 3336 * optlen - the size of the buffer.
3333 3337 */
3334 3338 SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname,
3335   - char __user *optval, int optlen)
  3339 + char __user *optval, unsigned int optlen)
3336 3340 {
3337 3341 int retval = 0;
3338 3342  
... ... @@ -2391,7 +2391,7 @@
2391 2391 }
2392 2392  
2393 2393 int kernel_setsockopt(struct socket *sock, int level, int optname,
2394   - char *optval, int optlen)
  2394 + char *optval, unsigned int optlen)
2395 2395 {
2396 2396 mm_segment_t oldfs = get_fs();
2397 2397 int err;
... ... @@ -1658,7 +1658,7 @@
1658 1658 */
1659 1659  
1660 1660 static int setsockopt(struct socket *sock,
1661   - int lvl, int opt, char __user *ov, int ol)
  1661 + int lvl, int opt, char __user *ov, unsigned int ol)
1662 1662 {
1663 1663 struct sock *sk = sock->sk;
1664 1664 struct tipc_port *tport = tipc_sk_port(sk);
... ... @@ -409,7 +409,7 @@
409 409 */
410 410  
411 411 static int x25_setsockopt(struct socket *sock, int level, int optname,
412   - char __user *optval, int optlen)
  412 + char __user *optval, unsigned int optlen)
413 413 {
414 414 int opt;
415 415 struct sock *sk = sock->sk;