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>
This commit is contained in:
parent
eb1cf0f8f7
commit
b7058842c9
|
@ -1306,14 +1306,6 @@ static void amb_close (struct atm_vcc * atm_vcc) {
|
||||||
return;
|
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 **********/
|
/********** Send **********/
|
||||||
|
|
||||||
static int amb_send (struct atm_vcc * atm_vcc, struct sk_buff * skb) {
|
static int amb_send (struct atm_vcc * atm_vcc, struct sk_buff * skb) {
|
||||||
|
|
|
@ -2031,7 +2031,7 @@ static int eni_getsockopt(struct atm_vcc *vcc,int level,int optname,
|
||||||
|
|
||||||
|
|
||||||
static int eni_setsockopt(struct atm_vcc *vcc,int level,int optname,
|
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;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1244,7 +1244,7 @@ static int fs_getsockopt(struct atm_vcc *vcc,int level,int optname,
|
||||||
|
|
||||||
|
|
||||||
static int fs_setsockopt(struct atm_vcc *vcc,int level,int optname,
|
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_enter ();
|
||||||
func_exit ();
|
func_exit ();
|
||||||
|
|
|
@ -1795,7 +1795,7 @@ fore200e_getsockopt(struct atm_vcc* vcc, int level, int optname, void __user *op
|
||||||
|
|
||||||
|
|
||||||
static int
|
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); */
|
/* struct fore200e* fore200e = FORE200E_DEV(vcc->dev); */
|
||||||
|
|
||||||
|
|
|
@ -2590,7 +2590,7 @@ static int hrz_getsockopt (struct atm_vcc * atm_vcc, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hrz_setsockopt (struct atm_vcc * atm_vcc, int level, int optname,
|
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);
|
hrz_dev * dev = HRZ_DEV(atm_vcc->dev);
|
||||||
PRINTD (DBG_FLOW|DBG_VCC, "hrz_setsockopt");
|
PRINTD (DBG_FLOW|DBG_VCC, "hrz_setsockopt");
|
||||||
switch (level) {
|
switch (level) {
|
||||||
|
|
|
@ -2862,7 +2862,7 @@ static int ia_getsockopt(struct atm_vcc *vcc, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ia_setsockopt(struct atm_vcc *vcc, int level, int optname,
|
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");)
|
IF_EVENT(printk(">ia_setsockopt\n");)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -1517,7 +1517,7 @@ static int zatm_getsockopt(struct atm_vcc *vcc,int level,int optname,
|
||||||
|
|
||||||
|
|
||||||
static int zatm_setsockopt(struct atm_vcc *vcc,int level,int optname,
|
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;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -415,7 +415,7 @@ data_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int data_sock_setsockopt(struct socket *sock, int level, int optname,
|
static int data_sock_setsockopt(struct socket *sock, int level, int optname,
|
||||||
char __user *optval, int len)
|
char __user *optval, unsigned int len)
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
int err = 0, opt = 0;
|
int err = 0, opt = 0;
|
||||||
|
|
|
@ -2179,7 +2179,7 @@ static int pppol2tp_session_setsockopt(struct sock *sk,
|
||||||
* session or the special tunnel type.
|
* session or the special tunnel type.
|
||||||
*/
|
*/
|
||||||
static int pppol2tp_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct pppol2tp_session *session = sk->sk_user_data;
|
struct pppol2tp_session *session = sk->sk_user_data;
|
||||||
|
|
|
@ -397,7 +397,7 @@ struct atmdev_ops { /* only send is required */
|
||||||
int (*getsockopt)(struct atm_vcc *vcc,int level,int optname,
|
int (*getsockopt)(struct atm_vcc *vcc,int level,int optname,
|
||||||
void __user *optval,int optlen);
|
void __user *optval,int optlen);
|
||||||
int (*setsockopt)(struct atm_vcc *vcc,int level,int optname,
|
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)(struct atm_vcc *vcc,struct sk_buff *skb);
|
||||||
int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
|
int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
|
||||||
void (*phy_put)(struct atm_dev *dev,unsigned char value,
|
void (*phy_put)(struct atm_dev *dev,unsigned char value,
|
||||||
|
|
|
@ -145,14 +145,14 @@ static inline int ip_mroute_opt(int opt)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_IP_MROUTE
|
#ifdef CONFIG_IP_MROUTE
|
||||||
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 ip_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
|
||||||
extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);
|
extern int ipmr_ioctl(struct sock *sk, int cmd, void __user *arg);
|
||||||
extern int ip_mr_init(void);
|
extern int ip_mr_init(void);
|
||||||
#else
|
#else
|
||||||
static inline
|
static inline
|
||||||
int ip_mroute_setsockopt(struct sock *sock,
|
int ip_mroute_setsockopt(struct sock *sock,
|
||||||
int optname, char __user *optval, int optlen)
|
int optname, char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ static inline int ip6_mroute_opt(int opt)
|
||||||
struct sock;
|
struct sock;
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_MROUTE
|
#ifdef CONFIG_IPV6_MROUTE
|
||||||
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_mroute_getsockopt(struct sock *, int, char __user *, int __user *);
|
||||||
extern int ip6_mr_input(struct sk_buff *skb);
|
extern int ip6_mr_input(struct sk_buff *skb);
|
||||||
extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg);
|
extern int ip6mr_ioctl(struct sock *sk, int cmd, void __user *arg);
|
||||||
|
@ -143,7 +143,7 @@ extern void ip6_mr_cleanup(void);
|
||||||
#else
|
#else
|
||||||
static inline
|
static inline
|
||||||
int ip6_mroute_setsockopt(struct sock *sock,
|
int ip6_mroute_setsockopt(struct sock *sock,
|
||||||
int optname, char __user *optval, int optlen)
|
int optname, char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,11 +178,11 @@ struct proto_ops {
|
||||||
int (*listen) (struct socket *sock, int len);
|
int (*listen) (struct socket *sock, int len);
|
||||||
int (*shutdown) (struct socket *sock, int flags);
|
int (*shutdown) (struct socket *sock, int flags);
|
||||||
int (*setsockopt)(struct socket *sock, int level,
|
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 (*getsockopt)(struct socket *sock, int level,
|
||||||
int optname, char __user *optval, int __user *optlen);
|
int optname, char __user *optval, int __user *optlen);
|
||||||
int (*compat_setsockopt)(struct socket *sock, int level,
|
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 (*compat_getsockopt)(struct socket *sock, int level,
|
||||||
int optname, char __user *optval, int __user *optlen);
|
int optname, char __user *optval, int __user *optlen);
|
||||||
int (*sendmsg) (struct kiocb *iocb, struct socket *sock,
|
int (*sendmsg) (struct kiocb *iocb, struct socket *sock,
|
||||||
|
@ -256,7 +256,7 @@ extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr,
|
||||||
extern int kernel_getsockopt(struct socket *sock, int level, int optname,
|
extern int kernel_getsockopt(struct socket *sock, int level, int optname,
|
||||||
char *optval, int *optlen);
|
char *optval, int *optlen);
|
||||||
extern int kernel_setsockopt(struct socket *sock, int level, int optname,
|
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,
|
extern int kernel_sendpage(struct socket *sock, struct page *page, int offset,
|
||||||
size_t size, int flags);
|
size_t size, int flags);
|
||||||
extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
|
extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
|
||||||
|
@ -313,7 +313,7 @@ SOCKCALL_WRAP(name, compat_ioctl, (struct socket *sock, unsigned int cmd, \
|
||||||
SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \
|
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, shutdown, (struct socket *sock, int flags), (sock, flags)) \
|
||||||
SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \
|
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, \
|
SOCKCALL_WRAP(name, getsockopt, (struct socket *sock, int level, int optname, \
|
||||||
char __user *optval, int __user *optlen), (sock, level, optname, optval, optlen)) \
|
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), \
|
SOCKCALL_WRAP(name, sendmsg, (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t len), \
|
||||||
|
|
|
@ -221,12 +221,12 @@ __ret;})
|
||||||
|
|
||||||
/* Call setsockopt() */
|
/* Call setsockopt() */
|
||||||
int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||||
int len);
|
unsigned int len);
|
||||||
int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||||
int *len);
|
int *len);
|
||||||
|
|
||||||
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval,
|
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||||
char __user *opt, int len);
|
char __user *opt, unsigned int len);
|
||||||
int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
|
int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||||
char __user *opt, int *len);
|
char __user *opt, int *len);
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,8 @@ extern int put_cmsg_compat(struct msghdr*, int, int, int, void *);
|
||||||
|
|
||||||
extern int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, unsigned char *, int);
|
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,
|
extern int compat_mc_setsockopt(struct sock *, int, int, char __user *, unsigned int,
|
||||||
int (*)(struct sock *, int, int, char __user *, int));
|
int (*)(struct sock *, int, int, char __user *, unsigned int));
|
||||||
extern int compat_mc_getsockopt(struct sock *, int, int, char __user *,
|
extern int compat_mc_getsockopt(struct sock *, int, int, char __user *,
|
||||||
int __user *, int (*)(struct sock *, int, int, char __user *,
|
int __user *, int (*)(struct sock *, int, int, char __user *,
|
||||||
int __user *));
|
int __user *));
|
||||||
|
|
|
@ -48,13 +48,13 @@ struct inet_connection_sock_af_ops {
|
||||||
u16 net_header_len;
|
u16 net_header_len;
|
||||||
u16 sockaddr_len;
|
u16 sockaddr_len;
|
||||||
int (*setsockopt)(struct sock *sk, int level, int optname,
|
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,
|
int (*getsockopt)(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int (*compat_setsockopt)(struct sock *sk,
|
int (*compat_setsockopt)(struct sock *sk,
|
||||||
int level, int optname,
|
int level, int optname,
|
||||||
char __user *optval, int optlen);
|
char __user *optval, unsigned int optlen);
|
||||||
int (*compat_getsockopt)(struct sock *sk,
|
int (*compat_getsockopt)(struct sock *sk,
|
||||||
int level, int optname,
|
int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
|
@ -332,5 +332,5 @@ extern void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr);
|
||||||
extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname,
|
extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname,
|
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 */
|
#endif /* _INET_CONNECTION_SOCK_H */
|
||||||
|
|
|
@ -381,10 +381,10 @@ extern int ip_options_rcv_srr(struct sk_buff *skb);
|
||||||
extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb);
|
extern void ip_cmsg_recv(struct msghdr *msg, struct sk_buff *skb);
|
||||||
extern int ip_cmsg_send(struct net *net,
|
extern int ip_cmsg_send(struct net *net,
|
||||||
struct msghdr *msg, struct ipcm_cookie *ipc);
|
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 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,
|
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,
|
extern int compat_ip_getsockopt(struct sock *sk, int level,
|
||||||
int optname, char __user *optval, int __user *optlen);
|
int optname, char __user *optval, int __user *optlen);
|
||||||
extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *));
|
extern int ip_ra_control(struct sock *sk, unsigned char on, void (*destructor)(struct sock *));
|
||||||
|
|
|
@ -550,7 +550,7 @@ extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type);
|
||||||
extern int ipv6_setsockopt(struct sock *sk, int level,
|
extern int ipv6_setsockopt(struct sock *sk, int level,
|
||||||
int optname,
|
int optname,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
extern int ipv6_getsockopt(struct sock *sk, int level,
|
extern int ipv6_getsockopt(struct sock *sk, int level,
|
||||||
int optname,
|
int optname,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
|
@ -559,7 +559,7 @@ extern int compat_ipv6_setsockopt(struct sock *sk,
|
||||||
int level,
|
int level,
|
||||||
int optname,
|
int optname,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
extern int compat_ipv6_getsockopt(struct sock *sk,
|
extern int compat_ipv6_getsockopt(struct sock *sk,
|
||||||
int level,
|
int level,
|
||||||
int optname,
|
int optname,
|
||||||
|
|
|
@ -544,7 +544,7 @@ struct sctp_af {
|
||||||
int level,
|
int level,
|
||||||
int optname,
|
int optname,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
int (*getsockopt) (struct sock *sk,
|
int (*getsockopt) (struct sock *sk,
|
||||||
int level,
|
int level,
|
||||||
int optname,
|
int optname,
|
||||||
|
@ -554,7 +554,7 @@ struct sctp_af {
|
||||||
int level,
|
int level,
|
||||||
int optname,
|
int optname,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
int (*compat_getsockopt) (struct sock *sk,
|
int (*compat_getsockopt) (struct sock *sk,
|
||||||
int level,
|
int level,
|
||||||
int optname,
|
int optname,
|
||||||
|
|
|
@ -624,7 +624,7 @@ struct proto {
|
||||||
void (*shutdown)(struct sock *sk, int how);
|
void (*shutdown)(struct sock *sk, int how);
|
||||||
int (*setsockopt)(struct sock *sk, int level,
|
int (*setsockopt)(struct sock *sk, int level,
|
||||||
int optname, char __user *optval,
|
int optname, char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
int (*getsockopt)(struct sock *sk, int level,
|
int (*getsockopt)(struct sock *sk, int level,
|
||||||
int optname, char __user *optval,
|
int optname, char __user *optval,
|
||||||
int __user *option);
|
int __user *option);
|
||||||
|
@ -632,7 +632,7 @@ struct proto {
|
||||||
int (*compat_setsockopt)(struct sock *sk,
|
int (*compat_setsockopt)(struct sock *sk,
|
||||||
int level,
|
int level,
|
||||||
int optname, char __user *optval,
|
int optname, char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
int (*compat_getsockopt)(struct sock *sk,
|
int (*compat_getsockopt)(struct sock *sk,
|
||||||
int level,
|
int level,
|
||||||
int optname, char __user *optval,
|
int optname, char __user *optval,
|
||||||
|
@ -951,7 +951,7 @@ extern void sock_rfree(struct sk_buff *skb);
|
||||||
|
|
||||||
extern int sock_setsockopt(struct socket *sock, int level,
|
extern int sock_setsockopt(struct socket *sock, int level,
|
||||||
int op, char __user *optval,
|
int op, char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
|
|
||||||
extern int sock_getsockopt(struct socket *sock, int level,
|
extern int sock_getsockopt(struct socket *sock, int level,
|
||||||
int op, char __user *optval,
|
int op, char __user *optval,
|
||||||
|
@ -993,7 +993,7 @@ extern int sock_no_shutdown(struct socket *, int);
|
||||||
extern int sock_no_getsockopt(struct socket *, int , int,
|
extern int sock_no_getsockopt(struct socket *, int , int,
|
||||||
char __user *, int __user *);
|
char __user *, int __user *);
|
||||||
extern int sock_no_setsockopt(struct socket *, int, int,
|
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 *,
|
extern int sock_no_sendmsg(struct kiocb *, struct socket *,
|
||||||
struct msghdr *, size_t);
|
struct msghdr *, size_t);
|
||||||
extern int sock_no_recvmsg(struct kiocb *, struct socket *,
|
extern int sock_no_recvmsg(struct kiocb *, struct socket *,
|
||||||
|
@ -1015,11 +1015,11 @@ extern int sock_common_getsockopt(struct socket *sock, int level, int optname,
|
||||||
extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
|
extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||||
struct msghdr *msg, size_t size, int flags);
|
struct msghdr *msg, size_t size, int flags);
|
||||||
extern int sock_common_setsockopt(struct socket *sock, int level, int optname,
|
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,
|
extern int compat_sock_common_getsockopt(struct socket *sock, int level,
|
||||||
int optname, char __user *optval, int __user *optlen);
|
int optname, char __user *optval, int __user *optlen);
|
||||||
extern int compat_sock_common_setsockopt(struct socket *sock, int level,
|
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);
|
extern void sk_common_release(struct sock *sk);
|
||||||
|
|
||||||
|
|
|
@ -394,13 +394,13 @@ extern int tcp_getsockopt(struct sock *sk, int level,
|
||||||
int __user *optlen);
|
int __user *optlen);
|
||||||
extern int tcp_setsockopt(struct sock *sk, int level,
|
extern int tcp_setsockopt(struct sock *sk, int level,
|
||||||
int optname, char __user *optval,
|
int optname, char __user *optval,
|
||||||
int optlen);
|
unsigned int optlen);
|
||||||
extern int compat_tcp_getsockopt(struct sock *sk,
|
extern int compat_tcp_getsockopt(struct sock *sk,
|
||||||
int level, int optname,
|
int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
extern int compat_tcp_setsockopt(struct sock *sk,
|
extern int compat_tcp_setsockopt(struct sock *sk,
|
||||||
int level, int optname,
|
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 void tcp_set_keepalive(struct sock *sk, int val);
|
||||||
extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk,
|
extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk,
|
||||||
struct msghdr *msg,
|
struct msghdr *msg,
|
||||||
|
|
|
@ -144,7 +144,7 @@ extern unsigned int udp_poll(struct file *file, struct socket *sock,
|
||||||
extern int udp_lib_getsockopt(struct sock *sk, int level, int optname,
|
extern int udp_lib_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
extern int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
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 *));
|
int (*push_pending_frames)(struct sock *));
|
||||||
|
|
||||||
extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
|
extern struct sock *udp4_lib_lookup(struct net *net, __be32 saddr, __be16 sport,
|
||||||
|
|
|
@ -679,7 +679,7 @@ static int check_qos(const struct atm_qos *qos)
|
||||||
}
|
}
|
||||||
|
|
||||||
int vcc_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct atm_vcc *vcc;
|
||||||
unsigned long value;
|
unsigned long value;
|
||||||
|
|
|
@ -21,7 +21,7 @@ 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_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||||
int vcc_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
int vcc_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||||
int vcc_setsockopt(struct socket *sock, int level, int optname,
|
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,
|
int vcc_getsockopt(struct socket *sock, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ static int pvc_connect(struct socket *sock,struct sockaddr *sockaddr,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pvc_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct sock *sk = sock->sk;
|
||||||
int error;
|
int error;
|
||||||
|
|
|
@ -446,7 +446,7 @@ int svc_change_qos(struct atm_vcc *vcc,struct atm_qos *qos)
|
||||||
|
|
||||||
|
|
||||||
static int svc_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct atm_vcc *vcc = ATM_SD(sock);
|
struct atm_vcc *vcc = ATM_SD(sock);
|
||||||
|
|
|
@ -534,7 +534,7 @@ ax25_cb *ax25_create_cb(void)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int ax25_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct sock *sk = sock->sk;
|
||||||
ax25_cb *ax25;
|
ax25_cb *ax25;
|
||||||
|
|
|
@ -466,7 +466,7 @@ drop:
|
||||||
goto done;
|
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 hci_ufilter uf = { .opcode = 0 };
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
|
|
|
@ -1698,7 +1698,7 @@ static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct ms
|
||||||
return bt_sock_recvmsg(iocb, sock, msg, len, flags);
|
return bt_sock_recvmsg(iocb, sock, msg, len, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, int optlen)
|
static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
struct l2cap_options opts;
|
struct l2cap_options opts;
|
||||||
|
@ -1755,7 +1755,7 @@ static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __us
|
||||||
return err;
|
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 sock *sk = sock->sk;
|
||||||
struct bt_security sec;
|
struct bt_security sec;
|
||||||
|
|
|
@ -730,7 +730,7 @@ out:
|
||||||
return copied ? : err;
|
return copied ? : err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rfcomm_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, int optlen)
|
static int rfcomm_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
@ -766,7 +766,7 @@ static int rfcomm_sock_setsockopt_old(struct socket *sock, int optname, char __u
|
||||||
return err;
|
return 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;
|
struct sock *sk = sock->sk;
|
||||||
struct bt_security sec;
|
struct bt_security sec;
|
||||||
|
|
|
@ -644,7 +644,7 @@ static int sco_sock_sendmsg(struct kiocb *iocb, struct socket *sock,
|
||||||
return err;
|
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;
|
struct sock *sk = sock->sk;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
|
@ -411,7 +411,7 @@ static int raw_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int raw_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct raw_sock *ro = raw_sk(sk);
|
struct raw_sock *ro = raw_sk(sk);
|
||||||
|
|
12
net/compat.c
12
net/compat.c
|
@ -331,7 +331,7 @@ struct compat_sock_fprog {
|
||||||
};
|
};
|
||||||
|
|
||||||
static int do_set_attach_filter(struct socket *sock, int level, int optname,
|
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 compat_sock_fprog __user *fprog32 = (struct compat_sock_fprog __user *)optval;
|
||||||
struct sock_fprog __user *kfprog = compat_alloc_user_space(sizeof(struct sock_fprog));
|
struct sock_fprog __user *kfprog = compat_alloc_user_space(sizeof(struct sock_fprog));
|
||||||
|
@ -351,7 +351,7 @@ static int do_set_attach_filter(struct socket *sock, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_set_sock_timeout(struct socket *sock, int level,
|
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 compat_timeval __user *up = (struct compat_timeval __user *) optval;
|
||||||
struct timeval ktime;
|
struct timeval ktime;
|
||||||
|
@ -373,7 +373,7 @@ static int do_set_sock_timeout(struct socket *sock, int level,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int compat_sock_setsockopt(struct socket *sock, int level, int optname,
|
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)
|
if (optname == SO_ATTACH_FILTER)
|
||||||
return do_set_attach_filter(sock, level, optname,
|
return do_set_attach_filter(sock, level, optname,
|
||||||
|
@ -385,7 +385,7 @@ static int compat_sock_setsockopt(struct socket *sock, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage long compat_sys_setsockopt(int fd, int level, int optname,
|
asmlinkage long compat_sys_setsockopt(int fd, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct socket *sock;
|
struct socket *sock;
|
||||||
|
@ -558,8 +558,8 @@ struct compat_group_filter {
|
||||||
|
|
||||||
|
|
||||||
int compat_mc_setsockopt(struct sock *sock, int level, int optname,
|
int compat_mc_setsockopt(struct sock *sock, int level, int optname,
|
||||||
char __user *optval, int optlen,
|
char __user *optval, unsigned int optlen,
|
||||||
int (*setsockopt)(struct sock *,int,int,char __user *,int))
|
int (*setsockopt)(struct sock *,int,int,char __user *,unsigned int))
|
||||||
{
|
{
|
||||||
char __user *koptval = optval;
|
char __user *koptval = optval;
|
||||||
int koptlen = optlen;
|
int koptlen = optlen;
|
||||||
|
|
|
@ -446,7 +446,7 @@ static inline void sock_valbool_flag(struct sock *sk, int bit, int valbool)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int sock_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct sock *sk = sock->sk;
|
||||||
int val;
|
int val;
|
||||||
|
@ -1697,7 +1697,7 @@ int sock_no_shutdown(struct socket *sock, int how)
|
||||||
EXPORT_SYMBOL(sock_no_shutdown);
|
EXPORT_SYMBOL(sock_no_shutdown);
|
||||||
|
|
||||||
int sock_no_setsockopt(struct socket *sock, int level, int optname,
|
int sock_no_setsockopt(struct socket *sock, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
@ -2018,7 +2018,7 @@ EXPORT_SYMBOL(sock_common_recvmsg);
|
||||||
* Set socket options on an inet socket.
|
* Set socket options on an inet socket.
|
||||||
*/
|
*/
|
||||||
int sock_common_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct sock *sk = sock->sk;
|
||||||
|
|
||||||
|
@ -2028,7 +2028,7 @@ EXPORT_SYMBOL(sock_common_setsockopt);
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_sock_common_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct sock *sk = sock->sk;
|
||||||
|
|
||||||
|
|
|
@ -290,14 +290,14 @@ extern int dccp_disconnect(struct sock *sk, int flags);
|
||||||
extern int dccp_getsockopt(struct sock *sk, int level, int optname,
|
extern int dccp_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
extern int dccp_setsockopt(struct sock *sk, int level, int optname,
|
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
|
#ifdef CONFIG_COMPAT
|
||||||
extern int compat_dccp_getsockopt(struct sock *sk,
|
extern int compat_dccp_getsockopt(struct sock *sk,
|
||||||
int level, int optname,
|
int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
extern int compat_dccp_setsockopt(struct sock *sk,
|
extern int compat_dccp_setsockopt(struct sock *sk,
|
||||||
int level, int optname,
|
int level, int optname,
|
||||||
char __user *optval, int optlen);
|
char __user *optval, unsigned int optlen);
|
||||||
#endif
|
#endif
|
||||||
extern int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg);
|
extern int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg);
|
||||||
extern int dccp_sendmsg(struct kiocb *iocb, struct sock *sk,
|
extern int dccp_sendmsg(struct kiocb *iocb, struct sock *sk,
|
||||||
|
|
|
@ -393,7 +393,7 @@ out:
|
||||||
EXPORT_SYMBOL_GPL(dccp_ioctl);
|
EXPORT_SYMBOL_GPL(dccp_ioctl);
|
||||||
|
|
||||||
static int dccp_setsockopt_service(struct sock *sk, const __be32 service,
|
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_sock *dp = dccp_sk(sk);
|
||||||
struct dccp_service_list *sl = NULL;
|
struct dccp_service_list *sl = NULL;
|
||||||
|
@ -464,7 +464,7 @@ static int dccp_setsockopt_cscov(struct sock *sk, int cscov, bool rx)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dccp_setsockopt_ccid(struct sock *sk, int type,
|
static int dccp_setsockopt_ccid(struct sock *sk, int type,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
u8 *val;
|
u8 *val;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -494,7 +494,7 @@ static int dccp_setsockopt_ccid(struct sock *sk, int type,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
|
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);
|
struct dccp_sock *dp = dccp_sk(sk);
|
||||||
int val, err = 0;
|
int val, err = 0;
|
||||||
|
@ -546,7 +546,7 @@ static int do_dccp_setsockopt(struct sock *sk, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
int dccp_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level != SOL_DCCP)
|
||||||
return inet_csk(sk)->icsk_af_ops->setsockopt(sk, level,
|
return inet_csk(sk)->icsk_af_ops->setsockopt(sk, level,
|
||||||
|
@ -559,7 +559,7 @@ EXPORT_SYMBOL_GPL(dccp_setsockopt);
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_dccp_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level != SOL_DCCP)
|
||||||
return inet_csk_compat_setsockopt(sk, level, optname,
|
return inet_csk_compat_setsockopt(sk, level, optname,
|
||||||
|
|
|
@ -157,7 +157,7 @@ static struct hlist_head dn_sk_hash[DN_SK_HASH_SIZE];
|
||||||
static struct hlist_head dn_wild_sk;
|
static struct hlist_head dn_wild_sk;
|
||||||
static atomic_t decnet_memory_allocated;
|
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 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)
|
static struct hlist_head *dn_find_list(struct sock *sk)
|
||||||
|
@ -1325,7 +1325,7 @@ out:
|
||||||
return err;
|
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;
|
struct sock *sk = sock->sk;
|
||||||
int err;
|
int err;
|
||||||
|
@ -1337,7 +1337,7 @@ static int dn_setsockopt(struct socket *sock, int level, int optname, char __use
|
||||||
return err;
|
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 sock *sk = sock->sk;
|
||||||
struct dn_scp *scp = DN_SK(sk);
|
struct dn_scp *scp = DN_SK(sk);
|
||||||
|
|
|
@ -414,7 +414,7 @@ static int dgram_getsockopt(struct sock *sk, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dgram_setsockopt(struct sock *sk, int level, int optname,
|
static int dgram_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct dgram_sock *ro = dgram_sk(sk);
|
struct dgram_sock *ro = dgram_sk(sk);
|
||||||
int val;
|
int val;
|
||||||
|
|
|
@ -244,7 +244,7 @@ static int raw_getsockopt(struct sock *sk, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int raw_setsockopt(struct sock *sk, int level, int optname,
|
static int raw_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
|
@ -714,7 +714,7 @@ int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname,
|
||||||
EXPORT_SYMBOL_GPL(inet_csk_compat_getsockopt);
|
EXPORT_SYMBOL_GPL(inet_csk_compat_getsockopt);
|
||||||
|
|
||||||
int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname,
|
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);
|
const struct inet_connection_sock *icsk = inet_csk(sk);
|
||||||
|
|
||||||
|
|
|
@ -440,7 +440,7 @@ out:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int do_ip_setsockopt(struct sock *sk, int level,
|
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);
|
struct inet_sock *inet = inet_sk(sk);
|
||||||
int val = 0, err;
|
int val = 0, err;
|
||||||
|
@ -950,7 +950,7 @@ e_inval:
|
||||||
}
|
}
|
||||||
|
|
||||||
int ip_setsockopt(struct sock *sk, int level,
|
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;
|
int err;
|
||||||
|
|
||||||
|
@ -975,7 +975,7 @@ EXPORT_SYMBOL(ip_setsockopt);
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_ip_setsockopt(struct sock *sk, int level, int optname,
|
int compat_ip_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
|
|
@ -931,7 +931,7 @@ static void mrtsock_destruct(struct sock *sk)
|
||||||
* MOSPF/PIM router set up we can clean this up.
|
* 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;
|
int ret;
|
||||||
struct vifctl vif;
|
struct vifctl vif;
|
||||||
|
|
|
@ -741,7 +741,7 @@ out: return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_raw_setsockopt(struct sock *sk, int level, int optname,
|
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 (optname == ICMP_FILTER) {
|
||||||
if (inet_sk(sk)->num != IPPROTO_ICMP)
|
if (inet_sk(sk)->num != IPPROTO_ICMP)
|
||||||
|
@ -753,7 +753,7 @@ static int do_raw_setsockopt(struct sock *sk, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int raw_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level != SOL_RAW)
|
||||||
return ip_setsockopt(sk, level, optname, optval, optlen);
|
return ip_setsockopt(sk, level, optname, optval, optlen);
|
||||||
|
@ -762,7 +762,7 @@ static int raw_setsockopt(struct sock *sk, int level, int optname,
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
static int compat_raw_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level != SOL_RAW)
|
||||||
return compat_ip_setsockopt(sk, level, optname, optval, optlen);
|
return compat_ip_setsockopt(sk, level, optname, optval, optlen);
|
||||||
|
|
|
@ -2032,7 +2032,7 @@ int tcp_disconnect(struct sock *sk, int flags)
|
||||||
* Socket option code for TCP.
|
* Socket option code for TCP.
|
||||||
*/
|
*/
|
||||||
static int do_tcp_setsockopt(struct sock *sk, int level,
|
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 tcp_sock *tp = tcp_sk(sk);
|
||||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||||
|
@ -2220,7 +2220,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
|
||||||
}
|
}
|
||||||
|
|
||||||
int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
|
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);
|
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||||
|
|
||||||
|
@ -2232,7 +2232,7 @@ int tcp_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_tcp_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level != SOL_TCP)
|
||||||
return inet_csk_compat_setsockopt(sk, level, optname,
|
return inet_csk_compat_setsockopt(sk, level, optname,
|
||||||
|
|
|
@ -1359,7 +1359,7 @@ void udp_destroy_sock(struct sock *sk)
|
||||||
* Socket option code for UDP
|
* Socket option code for UDP
|
||||||
*/
|
*/
|
||||||
int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
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 *))
|
int (*push_pending_frames)(struct sock *))
|
||||||
{
|
{
|
||||||
struct udp_sock *up = udp_sk(sk);
|
struct udp_sock *up = udp_sk(sk);
|
||||||
|
@ -1441,7 +1441,7 @@ int udp_lib_setsockopt(struct sock *sk, int level, int optname,
|
||||||
EXPORT_SYMBOL(udp_lib_setsockopt);
|
EXPORT_SYMBOL(udp_lib_setsockopt);
|
||||||
|
|
||||||
int udp_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||||
|
@ -1451,7 +1451,7 @@ int udp_setsockopt(struct sock *sk, int level, int optname,
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_udp_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||||
|
|
|
@ -11,13 +11,13 @@ extern void __udp4_lib_err(struct sk_buff *, u32, struct udp_table *);
|
||||||
extern int udp_v4_get_port(struct sock *sk, unsigned short snum);
|
extern int udp_v4_get_port(struct sock *sk, unsigned short snum);
|
||||||
|
|
||||||
extern int udp_setsockopt(struct sock *sk, int level, int optname,
|
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,
|
extern int udp_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
extern int compat_udp_setsockopt(struct sock *sk, int level, int optname,
|
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,
|
extern int compat_udp_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1281,7 +1281,7 @@ int ip6mr_sk_done(struct sock *sk)
|
||||||
* MOSPF/PIM router set up we can clean this up.
|
* 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;
|
int ret;
|
||||||
struct mif6ctl vif;
|
struct mif6ctl vif;
|
||||||
|
|
|
@ -123,7 +123,7 @@ struct ipv6_txoptions *ipv6_update_options(struct sock *sk,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
|
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 ipv6_pinfo *np = inet6_sk(sk);
|
||||||
struct net *net = sock_net(sk);
|
struct net *net = sock_net(sk);
|
||||||
|
@ -773,7 +773,7 @@ e_inval:
|
||||||
}
|
}
|
||||||
|
|
||||||
int ipv6_setsockopt(struct sock *sk, int level, int optname,
|
int ipv6_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
@ -801,7 +801,7 @@ EXPORT_SYMBOL(ipv6_setsockopt);
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
|
int compat_ipv6_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
|
|
@ -957,7 +957,7 @@ static int rawv6_geticmpfilter(struct sock *sk, int level, int optname,
|
||||||
|
|
||||||
|
|
||||||
static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
|
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);
|
struct raw6_sock *rp = raw6_sk(sk);
|
||||||
int val;
|
int val;
|
||||||
|
@ -1000,7 +1000,7 @@ static int do_rawv6_setsockopt(struct sock *sk, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rawv6_setsockopt(struct sock *sk, int level, int optname,
|
static int rawv6_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
switch(level) {
|
switch(level) {
|
||||||
case SOL_RAW:
|
case SOL_RAW:
|
||||||
|
@ -1024,7 +1024,7 @@ static int rawv6_setsockopt(struct sock *sk, int level, int optname,
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
static int compat_rawv6_setsockopt(struct sock *sk, int level, int optname,
|
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) {
|
switch (level) {
|
||||||
case SOL_RAW:
|
case SOL_RAW:
|
||||||
|
|
|
@ -1044,7 +1044,7 @@ void udpv6_destroy_sock(struct sock *sk)
|
||||||
* Socket option code for UDP
|
* Socket option code for UDP
|
||||||
*/
|
*/
|
||||||
int udpv6_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||||
|
@ -1054,7 +1054,7 @@ int udpv6_setsockopt(struct sock *sk, int level, int optname,
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
|
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)
|
if (level == SOL_UDP || level == SOL_UDPLITE)
|
||||||
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
return udp_lib_setsockopt(sk, level, optname, optval, optlen,
|
||||||
|
|
|
@ -16,10 +16,10 @@ extern int udp_v6_get_port(struct sock *sk, unsigned short snum);
|
||||||
extern int udpv6_getsockopt(struct sock *sk, int level, int optname,
|
extern int udpv6_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
extern int udpv6_setsockopt(struct sock *sk, int level, int optname,
|
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
|
#ifdef CONFIG_COMPAT
|
||||||
extern int compat_udpv6_setsockopt(struct sock *sk, int level, int optname,
|
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,
|
extern int compat_udpv6_getsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int __user *optlen);
|
char __user *optval, int __user *optlen);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1292,7 +1292,7 @@ const char *ipx_device_name(struct ipx_interface *intrfc)
|
||||||
* socket object. */
|
* socket object. */
|
||||||
|
|
||||||
static int ipx_setsockopt(struct socket *sock, int level, int optname,
|
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;
|
struct sock *sk = sock->sk;
|
||||||
int opt;
|
int opt;
|
||||||
|
|
|
@ -1826,7 +1826,7 @@ static int irda_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned lon
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static int irda_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct irda_sock *self = irda_sk(sk);
|
struct irda_sock *self = irda_sk(sk);
|
||||||
|
|
|
@ -1387,7 +1387,7 @@ static int iucv_sock_release(struct socket *sock)
|
||||||
|
|
||||||
/* getsockopt and setsockopt */
|
/* getsockopt and setsockopt */
|
||||||
static int iucv_sock_setsockopt(struct socket *sock, int level, int optname,
|
static int iucv_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;
|
struct sock *sk = sock->sk;
|
||||||
struct iucv_sock *iucv = iucv_sk(sk);
|
struct iucv_sock *iucv = iucv_sk(sk);
|
||||||
|
|
|
@ -973,7 +973,7 @@ static int llc_ui_ioctl(struct socket *sock, unsigned int cmd,
|
||||||
* Set various connection specific parameters.
|
* Set various connection specific parameters.
|
||||||
*/
|
*/
|
||||||
static int llc_ui_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct llc_sock *llc = llc_sk(sk);
|
struct llc_sock *llc = llc_sk(sk);
|
||||||
|
|
|
@ -113,7 +113,7 @@ static int nf_sockopt(struct sock *sk, u_int8_t pf, int val,
|
||||||
}
|
}
|
||||||
|
|
||||||
int nf_setsockopt(struct sock *sk, u_int8_t pf, int val, char __user *opt,
|
int nf_setsockopt(struct sock *sk, u_int8_t pf, int val, char __user *opt,
|
||||||
int len)
|
unsigned int len)
|
||||||
{
|
{
|
||||||
return nf_sockopt(sk, pf, val, opt, &len, 0);
|
return nf_sockopt(sk, pf, val, opt, &len, 0);
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ static int compat_nf_sockopt(struct sock *sk, u_int8_t pf, int val,
|
||||||
}
|
}
|
||||||
|
|
||||||
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf,
|
int compat_nf_setsockopt(struct sock *sk, u_int8_t 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);
|
return compat_nf_sockopt(sk, pf, val, opt, &len, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1150,7 +1150,7 @@ static void netlink_update_socket_mc(struct netlink_sock *nlk,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int netlink_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct netlink_sock *nlk = nlk_sk(sk);
|
struct netlink_sock *nlk = nlk_sk(sk);
|
||||||
|
|
|
@ -301,7 +301,7 @@ void nr_destroy_socket(struct sock *sk)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int nr_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct nr_sock *nr = nr_sk(sk);
|
struct nr_sock *nr = nr_sk(sk);
|
||||||
|
|
|
@ -1701,7 +1701,7 @@ static void packet_flush_mclist(struct sock *sk)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
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 sock *sk = sock->sk;
|
||||||
struct packet_sock *po = pkt_sk(sk);
|
struct packet_sock *po = pkt_sk(sk);
|
||||||
|
|
|
@ -742,7 +742,7 @@ static int pep_init(struct sock *sk)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pep_setsockopt(struct sock *sk, int level, int optname,
|
static int pep_setsockopt(struct sock *sk, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct pep_sock *pn = pep_sk(sk);
|
struct pep_sock *pn = pep_sk(sk);
|
||||||
int val = 0, err = 0;
|
int val = 0, err = 0;
|
||||||
|
|
|
@ -248,7 +248,7 @@ static int rds_cong_monitor(struct rds_sock *rs, char __user *optval,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rds_setsockopt(struct socket *sock, int level, int optname,
|
static int rds_setsockopt(struct socket *sock, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct rds_sock *rs = rds_sk_to_rs(sock->sk);
|
struct rds_sock *rs = rds_sk_to_rs(sock->sk);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -370,7 +370,7 @@ void rose_destroy_socket(struct sock *sk)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int rose_setsockopt(struct socket *sock, int level, int optname,
|
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 sock *sk = sock->sk;
|
||||||
struct rose_sock *rose = rose_sk(sk);
|
struct rose_sock *rose = rose_sk(sk);
|
||||||
|
|
|
@ -507,7 +507,7 @@ out:
|
||||||
* set RxRPC socket options
|
* set RxRPC socket options
|
||||||
*/
|
*/
|
||||||
static int rxrpc_setsockopt(struct socket *sock, int level, int optname,
|
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);
|
struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
|
||||||
unsigned min_sec_level;
|
unsigned min_sec_level;
|
||||||
|
|
|
@ -2027,7 +2027,8 @@ out:
|
||||||
* instead a error will be indicated to the user.
|
* instead a error will be indicated to the user.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_disable_fragments(struct sock *sk,
|
static int sctp_setsockopt_disable_fragments(struct sock *sk,
|
||||||
char __user *optval, int optlen)
|
char __user *optval,
|
||||||
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
|
@ -2043,7 +2044,7 @@ static int sctp_setsockopt_disable_fragments(struct sock *sk,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
if (optlen > sizeof(struct sctp_event_subscribe))
|
if (optlen > sizeof(struct sctp_event_subscribe))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -2064,7 +2065,7 @@ static int sctp_setsockopt_events(struct sock *sk, char __user *optval,
|
||||||
* association is closed.
|
* association is closed.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_sock *sp = sctp_sk(sk);
|
struct sctp_sock *sp = sctp_sk(sk);
|
||||||
|
|
||||||
|
@ -2318,7 +2319,8 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sctp_setsockopt_peer_addr_params(struct sock *sk,
|
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_paddrparams params;
|
||||||
struct sctp_transport *trans = NULL;
|
struct sctp_transport *trans = NULL;
|
||||||
|
@ -2430,7 +2432,7 @@ static int sctp_setsockopt_peer_addr_params(struct sock *sk,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int sctp_setsockopt_delayed_ack(struct sock *sk,
|
static int sctp_setsockopt_delayed_ack(struct sock *sk,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_sack_info params;
|
struct sctp_sack_info params;
|
||||||
struct sctp_transport *trans = NULL;
|
struct sctp_transport *trans = NULL;
|
||||||
|
@ -2546,7 +2548,7 @@ static int sctp_setsockopt_delayed_ack(struct sock *sk,
|
||||||
* by the change). With TCP-style sockets, this option is inherited by
|
* by the change). With TCP-style sockets, this option is inherited by
|
||||||
* sockets derived from a listener socket.
|
* 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_initmsg sinit;
|
||||||
struct sctp_sock *sp = sctp_sk(sk);
|
struct sctp_sock *sp = sctp_sk(sk);
|
||||||
|
@ -2583,7 +2585,8 @@ static int sctp_setsockopt_initmsg(struct sock *sk, char __user *optval, int opt
|
||||||
* to this call if the caller is using the UDP model.
|
* to this call if the caller is using the UDP model.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_default_send_param(struct sock *sk,
|
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_sndrcvinfo info;
|
||||||
struct sctp_association *asoc;
|
struct sctp_association *asoc;
|
||||||
|
@ -2622,7 +2625,7 @@ static int sctp_setsockopt_default_send_param(struct sock *sk,
|
||||||
* association peer's addresses.
|
* association peer's addresses.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_primary_addr(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_primary_addr(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_prim prim;
|
struct sctp_prim prim;
|
||||||
struct sctp_transport *trans;
|
struct sctp_transport *trans;
|
||||||
|
@ -2651,7 +2654,7 @@ static int sctp_setsockopt_primary_addr(struct sock *sk, char __user *optval,
|
||||||
* integer boolean flag.
|
* integer boolean flag.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_nodelay(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_nodelay(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
|
@ -2676,7 +2679,8 @@ static int sctp_setsockopt_nodelay(struct sock *sk, char __user *optval,
|
||||||
* be changed.
|
* 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_rtoinfo rtoinfo;
|
||||||
struct sctp_association *asoc;
|
struct sctp_association *asoc;
|
||||||
|
|
||||||
|
@ -2728,7 +2732,7 @@ static int sctp_setsockopt_rtoinfo(struct sock *sk, char __user *optval, int opt
|
||||||
* See [SCTP] for more information.
|
* 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;
|
struct sctp_assocparams assocparams;
|
||||||
|
@ -2800,7 +2804,7 @@ static int sctp_setsockopt_associnfo(struct sock *sk, char __user *optval, int o
|
||||||
* addresses and a user will receive both PF_INET6 and PF_INET type
|
* addresses and a user will receive both PF_INET6 and PF_INET type
|
||||||
* addresses on the socket.
|
* 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;
|
int val;
|
||||||
struct sctp_sock *sp = sctp_sk(sk);
|
struct sctp_sock *sp = sctp_sk(sk);
|
||||||
|
@ -2844,7 +2848,7 @@ static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, int op
|
||||||
* changed (effecting future associations only).
|
* changed (effecting future associations only).
|
||||||
* assoc_value: This parameter specifies the maximum size in bytes.
|
* assoc_value: This parameter specifies the maximum size in bytes.
|
||||||
*/
|
*/
|
||||||
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_assoc_value params;
|
struct sctp_assoc_value params;
|
||||||
struct sctp_association *asoc;
|
struct sctp_association *asoc;
|
||||||
|
@ -2899,7 +2903,7 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, int optl
|
||||||
* set primary request:
|
* set primary request:
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_sock *sp;
|
struct sctp_sock *sp;
|
||||||
struct sctp_endpoint *ep;
|
struct sctp_endpoint *ep;
|
||||||
|
@ -2950,7 +2954,7 @@ static int sctp_setsockopt_peer_primary_addr(struct sock *sk, char __user *optva
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sctp_setsockopt_adaptation_layer(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_adaptation_layer(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_setadaptation adaptation;
|
struct sctp_setadaptation adaptation;
|
||||||
|
|
||||||
|
@ -2979,7 +2983,7 @@ static int sctp_setsockopt_adaptation_layer(struct sock *sk, char __user *optval
|
||||||
* saved with outbound messages.
|
* saved with outbound messages.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_context(struct sock *sk, char __user *optval,
|
static int sctp_setsockopt_context(struct sock *sk, char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_assoc_value params;
|
struct sctp_assoc_value params;
|
||||||
struct sctp_sock *sp;
|
struct sctp_sock *sp;
|
||||||
|
@ -3030,7 +3034,7 @@ static int sctp_setsockopt_context(struct sock *sk, char __user *optval,
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_fragment_interleave(struct sock *sk,
|
static int sctp_setsockopt_fragment_interleave(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
int val;
|
int val;
|
||||||
|
|
||||||
|
@ -3063,7 +3067,7 @@ static int sctp_setsockopt_fragment_interleave(struct sock *sk,
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_partial_delivery_point(struct sock *sk,
|
static int sctp_setsockopt_partial_delivery_point(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
u32 val;
|
u32 val;
|
||||||
|
|
||||||
|
@ -3096,7 +3100,7 @@ static int sctp_setsockopt_partial_delivery_point(struct sock *sk,
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_maxburst(struct sock *sk,
|
static int sctp_setsockopt_maxburst(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_assoc_value params;
|
struct sctp_assoc_value params;
|
||||||
struct sctp_sock *sp;
|
struct sctp_sock *sp;
|
||||||
|
@ -3140,8 +3144,8 @@ static int sctp_setsockopt_maxburst(struct sock *sk,
|
||||||
* will only effect future associations on the socket.
|
* will only effect future associations on the socket.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_auth_chunk(struct sock *sk,
|
static int sctp_setsockopt_auth_chunk(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_authchunk val;
|
struct sctp_authchunk val;
|
||||||
|
|
||||||
|
@ -3172,8 +3176,8 @@ static int sctp_setsockopt_auth_chunk(struct sock *sk,
|
||||||
* endpoint requires the peer to use.
|
* endpoint requires the peer to use.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_hmac_ident(struct sock *sk,
|
static int sctp_setsockopt_hmac_ident(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_hmacalgo *hmacs;
|
struct sctp_hmacalgo *hmacs;
|
||||||
u32 idents;
|
u32 idents;
|
||||||
|
@ -3215,7 +3219,7 @@ out:
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_auth_key(struct sock *sk,
|
static int sctp_setsockopt_auth_key(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_authkey *authkey;
|
struct sctp_authkey *authkey;
|
||||||
struct sctp_association *asoc;
|
struct sctp_association *asoc;
|
||||||
|
@ -3260,8 +3264,8 @@ out:
|
||||||
* the association shared key.
|
* the association shared key.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_active_key(struct sock *sk,
|
static int sctp_setsockopt_active_key(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_authkeyid val;
|
struct sctp_authkeyid val;
|
||||||
struct sctp_association *asoc;
|
struct sctp_association *asoc;
|
||||||
|
@ -3288,8 +3292,8 @@ static int sctp_setsockopt_active_key(struct sock *sk,
|
||||||
* This set option will delete a shared secret key from use.
|
* This set option will delete a shared secret key from use.
|
||||||
*/
|
*/
|
||||||
static int sctp_setsockopt_del_key(struct sock *sk,
|
static int sctp_setsockopt_del_key(struct sock *sk,
|
||||||
char __user *optval,
|
char __user *optval,
|
||||||
int optlen)
|
unsigned int optlen)
|
||||||
{
|
{
|
||||||
struct sctp_authkeyid val;
|
struct sctp_authkeyid val;
|
||||||
struct sctp_association *asoc;
|
struct sctp_association *asoc;
|
||||||
|
@ -3332,7 +3336,7 @@ static int sctp_setsockopt_del_key(struct sock *sk,
|
||||||
* optlen - the size of the buffer.
|
* optlen - the size of the buffer.
|
||||||
*/
|
*/
|
||||||
SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname,
|
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;
|
int retval = 0;
|
||||||
|
|
||||||
|
|
|
@ -2391,7 +2391,7 @@ int kernel_getsockopt(struct socket *sock, int level, int optname,
|
||||||
}
|
}
|
||||||
|
|
||||||
int kernel_setsockopt(struct socket *sock, int level, int optname,
|
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();
|
mm_segment_t oldfs = get_fs();
|
||||||
int err;
|
int err;
|
||||||
|
|
|
@ -1658,7 +1658,7 @@ restart:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int setsockopt(struct socket *sock,
|
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 sock *sk = sock->sk;
|
||||||
struct tipc_port *tport = tipc_sk_port(sk);
|
struct tipc_port *tport = tipc_sk_port(sk);
|
||||||
|
|
|
@ -409,7 +409,7 @@ static void x25_destroy_socket(struct sock *sk)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int x25_setsockopt(struct socket *sock, int level, int optname,
|
static int x25_setsockopt(struct socket *sock, int level, int optname,
|
||||||
char __user *optval, int optlen)
|
char __user *optval, unsigned int optlen)
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
|
|
Loading…
Reference in New Issue