提交 e71a4783 编写于 作者: S Stephen Hemminger 提交者: David S. Miller

[NET] core: whitespace cleanup

Fix whitespace around keywords. Fix indentation especially of switch
statements.
Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 add459aa
...@@ -34,11 +34,11 @@ static inline int iov_from_user_compat_to_kern(struct iovec *kiov, ...@@ -34,11 +34,11 @@ static inline int iov_from_user_compat_to_kern(struct iovec *kiov,
{ {
int tot_len = 0; int tot_len = 0;
while(niov > 0) { while (niov > 0) {
compat_uptr_t buf; compat_uptr_t buf;
compat_size_t len; compat_size_t len;
if(get_user(len, &uiov32->iov_len) || if (get_user(len, &uiov32->iov_len) ||
get_user(buf, &uiov32->iov_base)) { get_user(buf, &uiov32->iov_base)) {
tot_len = -EFAULT; tot_len = -EFAULT;
break; break;
...@@ -78,12 +78,12 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov, ...@@ -78,12 +78,12 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
{ {
int tot_len; int tot_len;
if(kern_msg->msg_namelen) { if (kern_msg->msg_namelen) {
if(mode==VERIFY_READ) { if (mode==VERIFY_READ) {
int err = move_addr_to_kernel(kern_msg->msg_name, int err = move_addr_to_kernel(kern_msg->msg_name,
kern_msg->msg_namelen, kern_msg->msg_namelen,
kern_address); kern_address);
if(err < 0) if (err < 0)
return err; return err;
} }
kern_msg->msg_name = kern_address; kern_msg->msg_name = kern_address;
...@@ -93,7 +93,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov, ...@@ -93,7 +93,7 @@ int verify_compat_iovec(struct msghdr *kern_msg, struct iovec *kern_iov,
tot_len = iov_from_user_compat_to_kern(kern_iov, tot_len = iov_from_user_compat_to_kern(kern_iov,
(struct compat_iovec __user *)kern_msg->msg_iov, (struct compat_iovec __user *)kern_msg->msg_iov,
kern_msg->msg_iovlen); kern_msg->msg_iovlen);
if(tot_len >= 0) if (tot_len >= 0)
kern_msg->msg_iov = kern_iov; kern_msg->msg_iov = kern_iov;
return tot_len; return tot_len;
...@@ -146,8 +146,8 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk, ...@@ -146,8 +146,8 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk,
kcmlen = 0; kcmlen = 0;
kcmsg_base = kcmsg = (struct cmsghdr *)stackbuf; kcmsg_base = kcmsg = (struct cmsghdr *)stackbuf;
ucmsg = CMSG_COMPAT_FIRSTHDR(kmsg); ucmsg = CMSG_COMPAT_FIRSTHDR(kmsg);
while(ucmsg != NULL) { while (ucmsg != NULL) {
if(get_user(ucmlen, &ucmsg->cmsg_len)) if (get_user(ucmlen, &ucmsg->cmsg_len))
return -EFAULT; return -EFAULT;
/* Catch bogons. */ /* Catch bogons. */
...@@ -160,7 +160,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk, ...@@ -160,7 +160,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk,
kcmlen += tmp; kcmlen += tmp;
ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, ucmlen); ucmsg = cmsg_compat_nxthdr(kmsg, ucmsg, ucmlen);
} }
if(kcmlen == 0) if (kcmlen == 0)
return -EINVAL; return -EINVAL;
/* The kcmlen holds the 64-bit version of the control length. /* The kcmlen holds the 64-bit version of the control length.
...@@ -176,7 +176,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk, ...@@ -176,7 +176,7 @@ int cmsghdr_from_user_compat_to_kern(struct msghdr *kmsg, struct sock *sk,
/* Now copy them over neatly. */ /* Now copy them over neatly. */
memset(kcmsg, 0, kcmlen); memset(kcmsg, 0, kcmlen);
ucmsg = CMSG_COMPAT_FIRSTHDR(kmsg); ucmsg = CMSG_COMPAT_FIRSTHDR(kmsg);
while(ucmsg != NULL) { while (ucmsg != NULL) {
if (__get_user(ucmlen, &ucmsg->cmsg_len)) if (__get_user(ucmlen, &ucmsg->cmsg_len))
goto Efault; goto Efault;
if (!CMSG_COMPAT_OK(ucmlen, ucmsg, kmsg)) if (!CMSG_COMPAT_OK(ucmlen, ucmsg, kmsg))
...@@ -219,7 +219,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat ...@@ -219,7 +219,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
struct compat_cmsghdr cmhdr; struct compat_cmsghdr cmhdr;
int cmlen; int cmlen;
if(cm == NULL || kmsg->msg_controllen < sizeof(*cm)) { if (cm == NULL || kmsg->msg_controllen < sizeof(*cm)) {
kmsg->msg_flags |= MSG_CTRUNC; kmsg->msg_flags |= MSG_CTRUNC;
return 0; /* XXX: return error? check spec. */ return 0; /* XXX: return error? check spec. */
} }
...@@ -233,7 +233,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat ...@@ -233,7 +233,7 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
} }
cmlen = CMSG_COMPAT_LEN(len); cmlen = CMSG_COMPAT_LEN(len);
if(kmsg->msg_controllen < cmlen) { if (kmsg->msg_controllen < cmlen) {
kmsg->msg_flags |= MSG_CTRUNC; kmsg->msg_flags |= MSG_CTRUNC;
cmlen = kmsg->msg_controllen; cmlen = kmsg->msg_controllen;
} }
...@@ -241,9 +241,9 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat ...@@ -241,9 +241,9 @@ int put_cmsg_compat(struct msghdr *kmsg, int level, int type, int len, void *dat
cmhdr.cmsg_type = type; cmhdr.cmsg_type = type;
cmhdr.cmsg_len = cmlen; cmhdr.cmsg_len = cmlen;
if(copy_to_user(cm, &cmhdr, sizeof cmhdr)) if (copy_to_user(cm, &cmhdr, sizeof cmhdr))
return -EFAULT; return -EFAULT;
if(copy_to_user(CMSG_COMPAT_DATA(cm), data, cmlen - sizeof(struct compat_cmsghdr))) if (copy_to_user(CMSG_COMPAT_DATA(cm), data, cmlen - sizeof(struct compat_cmsghdr)))
return -EFAULT; return -EFAULT;
cmlen = CMSG_COMPAT_SPACE(len); cmlen = CMSG_COMPAT_SPACE(len);
kmsg->msg_control += cmlen; kmsg->msg_control += cmlen;
...@@ -646,7 +646,7 @@ asmlinkage long compat_sys_socketcall(int call, u32 __user *args) ...@@ -646,7 +646,7 @@ asmlinkage long compat_sys_socketcall(int call, u32 __user *args)
a0 = a[0]; a0 = a[0];
a1 = a[1]; a1 = a[1];
switch(call) { switch (call) {
case SYS_SOCKET: case SYS_SOCKET:
ret = sys_socket(a0, a1, a[2]); ret = sys_socket(a0, a1, a[2]);
break; break;
......
...@@ -836,7 +836,7 @@ int dev_ethtool(struct ifreq *ifr) ...@@ -836,7 +836,7 @@ int dev_ethtool(struct ifreq *ifr)
return -EPERM; return -EPERM;
} }
if(dev->ethtool_ops->begin) if (dev->ethtool_ops->begin)
if ((rc = dev->ethtool_ops->begin(dev)) < 0) if ((rc = dev->ethtool_ops->begin(dev)) < 0)
return rc; return rc;
...@@ -952,7 +952,7 @@ int dev_ethtool(struct ifreq *ifr) ...@@ -952,7 +952,7 @@ int dev_ethtool(struct ifreq *ifr)
rc = -EOPNOTSUPP; rc = -EOPNOTSUPP;
} }
if(dev->ethtool_ops->complete) if (dev->ethtool_ops->complete)
dev->ethtool_ops->complete(dev); dev->ethtool_ops->complete(dev);
if (old_features != dev->features) if (old_features != dev->features)
......
...@@ -352,8 +352,8 @@ static ssize_t wireless_show(struct device *d, char *buf, ...@@ -352,8 +352,8 @@ static ssize_t wireless_show(struct device *d, char *buf,
read_lock(&dev_base_lock); read_lock(&dev_base_lock);
if (dev_isalive(dev)) { if (dev_isalive(dev)) {
if(dev->wireless_handlers && if (dev->wireless_handlers &&
dev->wireless_handlers->get_wireless_stats) dev->wireless_handlers->get_wireless_stats)
iw = dev->wireless_handlers->get_wireless_stats(dev); iw = dev->wireless_handlers->get_wireless_stats(dev);
if (iw != NULL) if (iw != NULL)
ret = (*format)(iw, buf); ret = (*format)(iw, buf);
......
...@@ -645,7 +645,7 @@ static int pktgen_if_show(struct seq_file *seq, void *v) ...@@ -645,7 +645,7 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
if (pkt_dev->nr_labels) { if (pkt_dev->nr_labels) {
unsigned i; unsigned i;
seq_printf(seq, " mpls: "); seq_printf(seq, " mpls: ");
for(i = 0; i < pkt_dev->nr_labels; i++) for (i = 0; i < pkt_dev->nr_labels; i++)
seq_printf(seq, "%08x%s", ntohl(pkt_dev->labels[i]), seq_printf(seq, "%08x%s", ntohl(pkt_dev->labels[i]),
i == pkt_dev->nr_labels-1 ? "\n" : ", "); i == pkt_dev->nr_labels-1 ? "\n" : ", ");
} }
...@@ -750,7 +750,7 @@ static int hex32_arg(const char __user *user_buffer, unsigned long maxlen, __u32 ...@@ -750,7 +750,7 @@ static int hex32_arg(const char __user *user_buffer, unsigned long maxlen, __u32
int i = 0; int i = 0;
*num = 0; *num = 0;
for(; i < maxlen; i++) { for (; i < maxlen; i++) {
char c; char c;
*num <<= 4; *num <<= 4;
if (get_user(c, &user_buffer[i])) if (get_user(c, &user_buffer[i]))
...@@ -858,7 +858,7 @@ static ssize_t get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) ...@@ -858,7 +858,7 @@ static ssize_t get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev)
n++; n++;
if (n >= MAX_MPLS_LABELS) if (n >= MAX_MPLS_LABELS)
return -E2BIG; return -E2BIG;
} while(c == ','); } while (c == ',');
pkt_dev->nr_labels = n; pkt_dev->nr_labels = n;
return i; return i;
...@@ -1487,7 +1487,7 @@ static ssize_t pktgen_if_write(struct file *file, ...@@ -1487,7 +1487,7 @@ static ssize_t pktgen_if_write(struct file *file,
if (len < 0) { return len; } if (len < 0) { return len; }
i += len; i += len;
offset = sprintf(pg_result, "OK: mpls="); offset = sprintf(pg_result, "OK: mpls=");
for(n = 0; n < pkt_dev->nr_labels; n++) for (n = 0; n < pkt_dev->nr_labels; n++)
offset += sprintf(pg_result + offset, offset += sprintf(pg_result + offset,
"%08x%s", ntohl(pkt_dev->labels[n]), "%08x%s", ntohl(pkt_dev->labels[n]),
n == pkt_dev->nr_labels-1 ? "" : ","); n == pkt_dev->nr_labels-1 ? "" : ",");
...@@ -2148,7 +2148,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev) ...@@ -2148,7 +2148,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
if (pkt_dev->flags & F_MPLS_RND) { if (pkt_dev->flags & F_MPLS_RND) {
unsigned i; unsigned i;
for(i = 0; i < pkt_dev->nr_labels; i++) for (i = 0; i < pkt_dev->nr_labels; i++)
if (pkt_dev->labels[i] & MPLS_STACK_BOTTOM) if (pkt_dev->labels[i] & MPLS_STACK_BOTTOM)
pkt_dev->labels[i] = MPLS_STACK_BOTTOM | pkt_dev->labels[i] = MPLS_STACK_BOTTOM |
((__force __be32)random32() & ((__force __be32)random32() &
...@@ -2281,7 +2281,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev) ...@@ -2281,7 +2281,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
static void mpls_push(__be32 *mpls, struct pktgen_dev *pkt_dev) static void mpls_push(__be32 *mpls, struct pktgen_dev *pkt_dev)
{ {
unsigned i; unsigned i;
for(i = 0; i < pkt_dev->nr_labels; i++) { for (i = 0; i < pkt_dev->nr_labels; i++) {
*mpls++ = pkt_dev->labels[i] & ~MPLS_STACK_BOTTOM; *mpls++ = pkt_dev->labels[i] & ~MPLS_STACK_BOTTOM;
} }
mpls--; mpls--;
...@@ -2341,7 +2341,7 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev, ...@@ -2341,7 +2341,7 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
mpls_push(mpls, pkt_dev); mpls_push(mpls, pkt_dev);
if (pkt_dev->vlan_id != 0xffff) { if (pkt_dev->vlan_id != 0xffff) {
if(pkt_dev->svlan_id != 0xffff) { if (pkt_dev->svlan_id != 0xffff) {
svlan_tci = (__be16 *)skb_put(skb, sizeof(__be16)); svlan_tci = (__be16 *)skb_put(skb, sizeof(__be16));
*svlan_tci = build_tci(pkt_dev->svlan_id, *svlan_tci = build_tci(pkt_dev->svlan_id,
pkt_dev->svlan_cfi, pkt_dev->svlan_cfi,
...@@ -2677,7 +2677,7 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev, ...@@ -2677,7 +2677,7 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
mpls_push(mpls, pkt_dev); mpls_push(mpls, pkt_dev);
if (pkt_dev->vlan_id != 0xffff) { if (pkt_dev->vlan_id != 0xffff) {
if(pkt_dev->svlan_id != 0xffff) { if (pkt_dev->svlan_id != 0xffff) {
svlan_tci = (__be16 *)skb_put(skb, sizeof(__be16)); svlan_tci = (__be16 *)skb_put(skb, sizeof(__be16));
*svlan_tci = build_tci(pkt_dev->svlan_id, *svlan_tci = build_tci(pkt_dev->svlan_id,
pkt_dev->svlan_cfi, pkt_dev->svlan_cfi,
......
...@@ -361,8 +361,8 @@ int sock_setsockopt(struct socket *sock, int level, int optname, ...@@ -361,8 +361,8 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
} }
#endif #endif
if(optlen<sizeof(int)) if (optlen < sizeof(int))
return(-EINVAL); return -EINVAL;
if (get_user(val, (int __user *)optval)) if (get_user(val, (int __user *)optval))
return -EFAULT; return -EFAULT;
...@@ -371,265 +371,263 @@ int sock_setsockopt(struct socket *sock, int level, int optname, ...@@ -371,265 +371,263 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
lock_sock(sk); lock_sock(sk);
switch(optname) switch(optname) {
{ case SO_DEBUG:
case SO_DEBUG: if (val && !capable(CAP_NET_ADMIN)) {
if(val && !capable(CAP_NET_ADMIN)) ret = -EACCES;
{ }
ret = -EACCES; else if (valbool)
} sock_set_flag(sk, SOCK_DBG);
else if (valbool) else
sock_set_flag(sk, SOCK_DBG); sock_reset_flag(sk, SOCK_DBG);
else break;
sock_reset_flag(sk, SOCK_DBG); case SO_REUSEADDR:
break; sk->sk_reuse = valbool;
case SO_REUSEADDR: break;
sk->sk_reuse = valbool; case SO_TYPE:
break; case SO_ERROR:
case SO_TYPE: ret = -ENOPROTOOPT;
case SO_ERROR: break;
ret = -ENOPROTOOPT; case SO_DONTROUTE:
break; if (valbool)
case SO_DONTROUTE: sock_set_flag(sk, SOCK_LOCALROUTE);
if (valbool) else
sock_set_flag(sk, SOCK_LOCALROUTE); sock_reset_flag(sk, SOCK_LOCALROUTE);
else break;
sock_reset_flag(sk, SOCK_LOCALROUTE); case SO_BROADCAST:
break; sock_valbool_flag(sk, SOCK_BROADCAST, valbool);
case SO_BROADCAST: break;
sock_valbool_flag(sk, SOCK_BROADCAST, valbool); case SO_SNDBUF:
break; /* Don't error on this BSD doesn't and if you think
case SO_SNDBUF: about it this is right. Otherwise apps have to
/* Don't error on this BSD doesn't and if you think play 'guess the biggest size' games. RCVBUF/SNDBUF
about it this is right. Otherwise apps have to are treated in BSD as hints */
play 'guess the biggest size' games. RCVBUF/SNDBUF
are treated in BSD as hints */ if (val > sysctl_wmem_max)
val = sysctl_wmem_max;
if (val > sysctl_wmem_max)
val = sysctl_wmem_max;
set_sndbuf: set_sndbuf:
sk->sk_userlocks |= SOCK_SNDBUF_LOCK; sk->sk_userlocks |= SOCK_SNDBUF_LOCK;
if ((val * 2) < SOCK_MIN_SNDBUF) if ((val * 2) < SOCK_MIN_SNDBUF)
sk->sk_sndbuf = SOCK_MIN_SNDBUF; sk->sk_sndbuf = SOCK_MIN_SNDBUF;
else else
sk->sk_sndbuf = val * 2; sk->sk_sndbuf = val * 2;
/* /*
* Wake up sending tasks if we * Wake up sending tasks if we
* upped the value. * upped the value.
*/ */
sk->sk_write_space(sk); sk->sk_write_space(sk);
break; break;
case SO_SNDBUFFORCE: case SO_SNDBUFFORCE:
if (!capable(CAP_NET_ADMIN)) { if (!capable(CAP_NET_ADMIN)) {
ret = -EPERM; ret = -EPERM;
break; break;
} }
goto set_sndbuf; goto set_sndbuf;
case SO_RCVBUF: case SO_RCVBUF:
/* Don't error on this BSD doesn't and if you think /* Don't error on this BSD doesn't and if you think
about it this is right. Otherwise apps have to about it this is right. Otherwise apps have to
play 'guess the biggest size' games. RCVBUF/SNDBUF play 'guess the biggest size' games. RCVBUF/SNDBUF
are treated in BSD as hints */ are treated in BSD as hints */
if (val > sysctl_rmem_max) if (val > sysctl_rmem_max)
val = sysctl_rmem_max; val = sysctl_rmem_max;
set_rcvbuf: set_rcvbuf:
sk->sk_userlocks |= SOCK_RCVBUF_LOCK; sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
/* /*
* We double it on the way in to account for * We double it on the way in to account for
* "struct sk_buff" etc. overhead. Applications * "struct sk_buff" etc. overhead. Applications
* assume that the SO_RCVBUF setting they make will * assume that the SO_RCVBUF setting they make will
* allow that much actual data to be received on that * allow that much actual data to be received on that
* socket. * socket.
* *
* Applications are unaware that "struct sk_buff" and * Applications are unaware that "struct sk_buff" and
* other overheads allocate from the receive buffer * other overheads allocate from the receive buffer
* during socket buffer allocation. * during socket buffer allocation.
* *
* And after considering the possible alternatives, * And after considering the possible alternatives,
* returning the value we actually used in getsockopt * returning the value we actually used in getsockopt
* is the most desirable behavior. * is the most desirable behavior.
*/ */
if ((val * 2) < SOCK_MIN_RCVBUF) if ((val * 2) < SOCK_MIN_RCVBUF)
sk->sk_rcvbuf = SOCK_MIN_RCVBUF; sk->sk_rcvbuf = SOCK_MIN_RCVBUF;
else else
sk->sk_rcvbuf = val * 2; sk->sk_rcvbuf = val * 2;
break;
case SO_RCVBUFFORCE:
if (!capable(CAP_NET_ADMIN)) {
ret = -EPERM;
break; break;
}
goto set_rcvbuf;
case SO_RCVBUFFORCE: case SO_KEEPALIVE:
if (!capable(CAP_NET_ADMIN)) {
ret = -EPERM;
break;
}
goto set_rcvbuf;
case SO_KEEPALIVE:
#ifdef CONFIG_INET #ifdef CONFIG_INET
if (sk->sk_protocol == IPPROTO_TCP) if (sk->sk_protocol == IPPROTO_TCP)
tcp_set_keepalive(sk, valbool); tcp_set_keepalive(sk, valbool);
#endif #endif
sock_valbool_flag(sk, SOCK_KEEPOPEN, valbool); sock_valbool_flag(sk, SOCK_KEEPOPEN, valbool);
break; break;
case SO_OOBINLINE: case SO_OOBINLINE:
sock_valbool_flag(sk, SOCK_URGINLINE, valbool); sock_valbool_flag(sk, SOCK_URGINLINE, valbool);
break;
case SO_NO_CHECK:
sk->sk_no_check = valbool;
break;
case SO_PRIORITY:
if ((val >= 0 && val <= 6) || capable(CAP_NET_ADMIN))
sk->sk_priority = val;
else
ret = -EPERM;
break;
case SO_LINGER:
if (optlen < sizeof(ling)) {
ret = -EINVAL; /* 1003.1g */
break; break;
}
case SO_NO_CHECK: if (copy_from_user(&ling,optval,sizeof(ling))) {
sk->sk_no_check = valbool; ret = -EFAULT;
break;
case SO_PRIORITY:
if ((val >= 0 && val <= 6) || capable(CAP_NET_ADMIN))
sk->sk_priority = val;
else
ret = -EPERM;
break; break;
}
case SO_LINGER: if (!ling.l_onoff)
if(optlen<sizeof(ling)) { sock_reset_flag(sk, SOCK_LINGER);
ret = -EINVAL; /* 1003.1g */ else {
break;
}
if (copy_from_user(&ling,optval,sizeof(ling))) {
ret = -EFAULT;
break;
}
if (!ling.l_onoff)
sock_reset_flag(sk, SOCK_LINGER);
else {
#if (BITS_PER_LONG == 32) #if (BITS_PER_LONG == 32)
if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ) if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT; sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
else
#endif
sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
sock_set_flag(sk, SOCK_LINGER);
}
break;
case SO_BSDCOMPAT:
sock_warn_obsolete_bsdism("setsockopt");
break;
case SO_PASSCRED:
if (valbool)
set_bit(SOCK_PASSCRED, &sock->flags);
else else
clear_bit(SOCK_PASSCRED, &sock->flags); #endif
break; sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
sock_set_flag(sk, SOCK_LINGER);
case SO_TIMESTAMP: }
if (valbool) { break;
sock_set_flag(sk, SOCK_RCVTSTAMP);
sock_enable_timestamp(sk); case SO_BSDCOMPAT:
} else sock_warn_obsolete_bsdism("setsockopt");
sock_reset_flag(sk, SOCK_RCVTSTAMP); break;
break;
case SO_PASSCRED:
case SO_RCVLOWAT: if (valbool)
if (val < 0) set_bit(SOCK_PASSCRED, &sock->flags);
val = INT_MAX; else
sk->sk_rcvlowat = val ? : 1; clear_bit(SOCK_PASSCRED, &sock->flags);
break; break;
case SO_TIMESTAMP:
if (valbool) {
sock_set_flag(sk, SOCK_RCVTSTAMP);
sock_enable_timestamp(sk);
} else
sock_reset_flag(sk, SOCK_RCVTSTAMP);
break;
case SO_RCVLOWAT:
if (val < 0)
val = INT_MAX;
sk->sk_rcvlowat = val ? : 1;
break;
case SO_RCVTIMEO:
ret = sock_set_timeout(&sk->sk_rcvtimeo, optval, optlen);
break;
case SO_SNDTIMEO:
ret = sock_set_timeout(&sk->sk_sndtimeo, optval, optlen);
break;
case SO_RCVTIMEO: #ifdef CONFIG_NETDEVICES
ret = sock_set_timeout(&sk->sk_rcvtimeo, optval, optlen); case SO_BINDTODEVICE:
break; {
char devname[IFNAMSIZ];
case SO_SNDTIMEO: /* Sorry... */
ret = sock_set_timeout(&sk->sk_sndtimeo, optval, optlen); if (!capable(CAP_NET_RAW)) {
ret = -EPERM;
break; break;
}
#ifdef CONFIG_NETDEVICES /* Bind this socket to a particular device like "eth0",
case SO_BINDTODEVICE: * as specified in the passed interface name. If the
{ * name is "" or the option length is zero the socket
char devname[IFNAMSIZ]; * is not bound.
*/
/* Sorry... */ if (!valbool) {
if (!capable(CAP_NET_RAW)) { sk->sk_bound_dev_if = 0;
ret = -EPERM; } else {
if (optlen > IFNAMSIZ - 1)
optlen = IFNAMSIZ - 1;
memset(devname, 0, sizeof(devname));
if (copy_from_user(devname, optval, optlen)) {
ret = -EFAULT;
break; break;
} }
/* Bind this socket to a particular device like "eth0", /* Remove any cached route for this socket. */
* as specified in the passed interface name. If the sk_dst_reset(sk);
* name is "" or the option length is zero the socket
* is not bound.
*/
if (!valbool) { if (devname[0] == '\0') {
sk->sk_bound_dev_if = 0; sk->sk_bound_dev_if = 0;
} else { } else {
if (optlen > IFNAMSIZ - 1) struct net_device *dev = dev_get_by_name(devname);
optlen = IFNAMSIZ - 1; if (!dev) {
memset(devname, 0, sizeof(devname)); ret = -ENODEV;
if (copy_from_user(devname, optval, optlen)) {
ret = -EFAULT;
break; break;
} }
sk->sk_bound_dev_if = dev->ifindex;
/* Remove any cached route for this socket. */ dev_put(dev);
sk_dst_reset(sk);
if (devname[0] == '\0') {
sk->sk_bound_dev_if = 0;
} else {
struct net_device *dev = dev_get_by_name(devname);
if (!dev) {
ret = -ENODEV;
break;
}
sk->sk_bound_dev_if = dev->ifindex;
dev_put(dev);
}
} }
break;
} }
break;
}
#endif #endif
case SO_ATTACH_FILTER: case SO_ATTACH_FILTER:
ret = -EINVAL; ret = -EINVAL;
if (optlen == sizeof(struct sock_fprog)) { if (optlen == sizeof(struct sock_fprog)) {
struct sock_fprog fprog; struct sock_fprog fprog;
ret = -EFAULT;
if (copy_from_user(&fprog, optval, sizeof(fprog)))
break;
ret = sk_attach_filter(&fprog, sk);
}
break;
case SO_DETACH_FILTER: ret = -EFAULT;
rcu_read_lock_bh(); if (copy_from_user(&fprog, optval, sizeof(fprog)))
filter = rcu_dereference(sk->sk_filter);
if (filter) {
rcu_assign_pointer(sk->sk_filter, NULL);
sk_filter_release(sk, filter);
rcu_read_unlock_bh();
break; break;
}
ret = sk_attach_filter(&fprog, sk);
}
break;
case SO_DETACH_FILTER:
rcu_read_lock_bh();
filter = rcu_dereference(sk->sk_filter);
if (filter) {
rcu_assign_pointer(sk->sk_filter, NULL);
sk_filter_release(sk, filter);
rcu_read_unlock_bh(); rcu_read_unlock_bh();
ret = -ENONET;
break; break;
}
rcu_read_unlock_bh();
ret = -ENONET;
break;
case SO_PASSSEC: case SO_PASSSEC:
if (valbool) if (valbool)
set_bit(SOCK_PASSSEC, &sock->flags); set_bit(SOCK_PASSSEC, &sock->flags);
else else
clear_bit(SOCK_PASSSEC, &sock->flags); clear_bit(SOCK_PASSSEC, &sock->flags);
break; break;
/* We implement the SO_SNDLOWAT etc to /* We implement the SO_SNDLOWAT etc to
not be settable (1003.1g 5.3) */ not be settable (1003.1g 5.3) */
default: default:
ret = -ENOPROTOOPT; ret = -ENOPROTOOPT;
break; break;
} }
release_sock(sk); release_sock(sk);
return ret; return ret;
...@@ -641,8 +639,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname, ...@@ -641,8 +639,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
{ {
struct sock *sk = sock->sk; struct sock *sk = sock->sk;
union union {
{
int val; int val;
struct linger ling; struct linger ling;
struct timeval tm; struct timeval tm;
...@@ -651,148 +648,148 @@ int sock_getsockopt(struct socket *sock, int level, int optname, ...@@ -651,148 +648,148 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
unsigned int lv = sizeof(int); unsigned int lv = sizeof(int);
int len; int len;
if(get_user(len,optlen)) if (get_user(len, optlen))
return -EFAULT; return -EFAULT;
if(len < 0) if (len < 0)
return -EINVAL; return -EINVAL;
switch(optname) switch(optname) {
{ case SO_DEBUG:
case SO_DEBUG: v.val = sock_flag(sk, SOCK_DBG);
v.val = sock_flag(sk, SOCK_DBG); break;
break;
case SO_DONTROUTE:
case SO_DONTROUTE: v.val = sock_flag(sk, SOCK_LOCALROUTE);
v.val = sock_flag(sk, SOCK_LOCALROUTE); break;
break;
case SO_BROADCAST:
case SO_BROADCAST: v.val = !!sock_flag(sk, SOCK_BROADCAST);
v.val = !!sock_flag(sk, SOCK_BROADCAST); break;
break;
case SO_SNDBUF:
case SO_SNDBUF: v.val = sk->sk_sndbuf;
v.val = sk->sk_sndbuf; break;
break;
case SO_RCVBUF:
case SO_RCVBUF: v.val = sk->sk_rcvbuf;
v.val = sk->sk_rcvbuf; break;
break;
case SO_REUSEADDR:
case SO_REUSEADDR: v.val = sk->sk_reuse;
v.val = sk->sk_reuse; break;
break;
case SO_KEEPALIVE:
case SO_KEEPALIVE: v.val = !!sock_flag(sk, SOCK_KEEPOPEN);
v.val = !!sock_flag(sk, SOCK_KEEPOPEN); break;
break;
case SO_TYPE:
case SO_TYPE: v.val = sk->sk_type;
v.val = sk->sk_type; break;
break;
case SO_ERROR:
case SO_ERROR: v.val = -sock_error(sk);
v.val = -sock_error(sk); if (v.val==0)
if(v.val==0) v.val = xchg(&sk->sk_err_soft, 0);
v.val = xchg(&sk->sk_err_soft, 0); break;
break;
case SO_OOBINLINE:
case SO_OOBINLINE: v.val = !!sock_flag(sk, SOCK_URGINLINE);
v.val = !!sock_flag(sk, SOCK_URGINLINE); break;
break;
case SO_NO_CHECK:
case SO_NO_CHECK: v.val = sk->sk_no_check;
v.val = sk->sk_no_check; break;
break;
case SO_PRIORITY:
case SO_PRIORITY: v.val = sk->sk_priority;
v.val = sk->sk_priority; break;
break;
case SO_LINGER:
case SO_LINGER: lv = sizeof(v.ling);
lv = sizeof(v.ling); v.ling.l_onoff = !!sock_flag(sk, SOCK_LINGER);
v.ling.l_onoff = !!sock_flag(sk, SOCK_LINGER); v.ling.l_linger = sk->sk_lingertime / HZ;
v.ling.l_linger = sk->sk_lingertime / HZ; break;
break;
case SO_BSDCOMPAT:
case SO_BSDCOMPAT: sock_warn_obsolete_bsdism("getsockopt");
sock_warn_obsolete_bsdism("getsockopt"); break;
break;
case SO_TIMESTAMP:
case SO_TIMESTAMP: v.val = sock_flag(sk, SOCK_RCVTSTAMP);
v.val = sock_flag(sk, SOCK_RCVTSTAMP); break;
break;
case SO_RCVTIMEO:
case SO_RCVTIMEO: lv=sizeof(struct timeval);
lv=sizeof(struct timeval); if (sk->sk_rcvtimeo == MAX_SCHEDULE_TIMEOUT) {
if (sk->sk_rcvtimeo == MAX_SCHEDULE_TIMEOUT) { v.tm.tv_sec = 0;
v.tm.tv_sec = 0; v.tm.tv_usec = 0;
v.tm.tv_usec = 0; } else {
} else { v.tm.tv_sec = sk->sk_rcvtimeo / HZ;
v.tm.tv_sec = sk->sk_rcvtimeo / HZ; v.tm.tv_usec = ((sk->sk_rcvtimeo % HZ) * 1000000) / HZ;
v.tm.tv_usec = ((sk->sk_rcvtimeo % HZ) * 1000000) / HZ; }
} break;
break;
case SO_SNDTIMEO:
lv=sizeof(struct timeval);
if (sk->sk_sndtimeo == MAX_SCHEDULE_TIMEOUT) {
v.tm.tv_sec = 0;
v.tm.tv_usec = 0;
} else {
v.tm.tv_sec = sk->sk_sndtimeo / HZ;
v.tm.tv_usec = ((sk->sk_sndtimeo % HZ) * 1000000) / HZ;
}
break;
case SO_SNDTIMEO: case SO_RCVLOWAT:
lv=sizeof(struct timeval); v.val = sk->sk_rcvlowat;
if (sk->sk_sndtimeo == MAX_SCHEDULE_TIMEOUT) { break;
v.tm.tv_sec = 0;
v.tm.tv_usec = 0;
} else {
v.tm.tv_sec = sk->sk_sndtimeo / HZ;
v.tm.tv_usec = ((sk->sk_sndtimeo % HZ) * 1000000) / HZ;
}
break;
case SO_RCVLOWAT: case SO_SNDLOWAT:
v.val = sk->sk_rcvlowat; v.val=1;
break; break;
case SO_SNDLOWAT: case SO_PASSCRED:
v.val=1; v.val = test_bit(SOCK_PASSCRED, &sock->flags) ? 1 : 0;
break; break;
case SO_PASSCRED: case SO_PEERCRED:
v.val = test_bit(SOCK_PASSCRED, &sock->flags) ? 1 : 0; if (len > sizeof(sk->sk_peercred))
break; len = sizeof(sk->sk_peercred);
if (copy_to_user(optval, &sk->sk_peercred, len))
return -EFAULT;
goto lenout;
case SO_PEERCRED: case SO_PEERNAME:
if (len > sizeof(sk->sk_peercred)) {
len = sizeof(sk->sk_peercred); char address[128];
if (copy_to_user(optval, &sk->sk_peercred, len))
return -EFAULT; if (sock->ops->getname(sock, (struct sockaddr *)address, &lv, 2))
goto lenout; return -ENOTCONN;
if (lv < len)
case SO_PEERNAME: return -EINVAL;
{ if (copy_to_user(optval, address, len))
char address[128]; return -EFAULT;
goto lenout;
if (sock->ops->getname(sock, (struct sockaddr *)address, &lv, 2)) }
return -ENOTCONN;
if (lv < len)
return -EINVAL;
if (copy_to_user(optval, address, len))
return -EFAULT;
goto lenout;
}
/* Dubious BSD thing... Probably nobody even uses it, but /* Dubious BSD thing... Probably nobody even uses it, but
* the UNIX standard wants it for whatever reason... -DaveM * the UNIX standard wants it for whatever reason... -DaveM
*/ */
case SO_ACCEPTCONN: case SO_ACCEPTCONN:
v.val = sk->sk_state == TCP_LISTEN; v.val = sk->sk_state == TCP_LISTEN;
break; break;
case SO_PASSSEC: case SO_PASSSEC:
v.val = test_bit(SOCK_PASSSEC, &sock->flags) ? 1 : 0; v.val = test_bit(SOCK_PASSSEC, &sock->flags) ? 1 : 0;
break; break;
case SO_PEERSEC: case SO_PEERSEC:
return security_socket_getpeersec_stream(sock, optval, optlen, len); return security_socket_getpeersec_stream(sock, optval, optlen, len);
default: default:
return(-ENOPROTOOPT); return -ENOPROTOOPT;
} }
if (len > lv) if (len > lv)
len = lv; len = lv;
if (copy_to_user(optval, &v, len)) if (copy_to_user(optval, &v, len))
...@@ -1220,13 +1217,13 @@ static void __lock_sock(struct sock *sk) ...@@ -1220,13 +1217,13 @@ static void __lock_sock(struct sock *sk)
{ {
DEFINE_WAIT(wait); DEFINE_WAIT(wait);
for(;;) { for (;;) {
prepare_to_wait_exclusive(&sk->sk_lock.wq, &wait, prepare_to_wait_exclusive(&sk->sk_lock.wq, &wait,
TASK_UNINTERRUPTIBLE); TASK_UNINTERRUPTIBLE);
spin_unlock_bh(&sk->sk_lock.slock); spin_unlock_bh(&sk->sk_lock.slock);
schedule(); schedule();
spin_lock_bh(&sk->sk_lock.slock); spin_lock_bh(&sk->sk_lock.slock);
if(!sock_owned_by_user(sk)) if (!sock_owned_by_user(sk))
break; break;
} }
finish_wait(&sk->sk_lock.wq, &wait); finish_wait(&sk->sk_lock.wq, &wait);
...@@ -1258,7 +1255,7 @@ static void __release_sock(struct sock *sk) ...@@ -1258,7 +1255,7 @@ static void __release_sock(struct sock *sk)
} while (skb != NULL); } while (skb != NULL);
bh_lock_sock(sk); bh_lock_sock(sk);
} while((skb = sk->sk_backlog.head) != NULL); } while ((skb = sk->sk_backlog.head) != NULL);
} }
/** /**
...@@ -1420,7 +1417,7 @@ static void sock_def_write_space(struct sock *sk) ...@@ -1420,7 +1417,7 @@ static void sock_def_write_space(struct sock *sk)
/* Do not wake up a writer until he can make "significant" /* Do not wake up a writer until he can make "significant"
* progress. --DaveM * progress. --DaveM
*/ */
if((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) { if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) {
if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) if (sk->sk_sleep && waitqueue_active(sk->sk_sleep))
wake_up_interruptible(sk->sk_sleep); wake_up_interruptible(sk->sk_sleep);
...@@ -1482,8 +1479,7 @@ void sock_init_data(struct socket *sock, struct sock *sk) ...@@ -1482,8 +1479,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
sock_set_flag(sk, SOCK_ZAPPED); sock_set_flag(sk, SOCK_ZAPPED);
if(sock) if (sock) {
{
sk->sk_type = sock->type; sk->sk_type = sock->type;
sk->sk_sleep = &sock->wait; sk->sk_sleep = &sock->wait;
sock->sk = sk; sock->sk = sk;
......
...@@ -463,17 +463,17 @@ static inline iw_handler get_handler(struct net_device *dev, ...@@ -463,17 +463,17 @@ static inline iw_handler get_handler(struct net_device *dev,
unsigned int index; /* *MUST* be unsigned */ unsigned int index; /* *MUST* be unsigned */
/* Check if we have some wireless handlers defined */ /* Check if we have some wireless handlers defined */
if(dev->wireless_handlers == NULL) if (dev->wireless_handlers == NULL)
return NULL; return NULL;
/* Try as a standard command */ /* Try as a standard command */
index = cmd - SIOCIWFIRST; index = cmd - SIOCIWFIRST;
if(index < dev->wireless_handlers->num_standard) if (index < dev->wireless_handlers->num_standard)
return dev->wireless_handlers->standard[index]; return dev->wireless_handlers->standard[index];
/* Try as a private command */ /* Try as a private command */
index = cmd - SIOCIWFIRSTPRIV; index = cmd - SIOCIWFIRSTPRIV;
if(index < dev->wireless_handlers->num_private) if (index < dev->wireless_handlers->num_private)
return dev->wireless_handlers->private[index]; return dev->wireless_handlers->private[index];
/* Not found */ /* Not found */
...@@ -487,7 +487,7 @@ static inline iw_handler get_handler(struct net_device *dev, ...@@ -487,7 +487,7 @@ static inline iw_handler get_handler(struct net_device *dev,
static inline struct iw_statistics *get_wireless_stats(struct net_device *dev) static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
{ {
/* New location */ /* New location */
if((dev->wireless_handlers != NULL) && if ((dev->wireless_handlers != NULL) &&
(dev->wireless_handlers->get_wireless_stats != NULL)) (dev->wireless_handlers->get_wireless_stats != NULL))
return dev->wireless_handlers->get_wireless_stats(dev); return dev->wireless_handlers->get_wireless_stats(dev);
...@@ -516,7 +516,7 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev) ...@@ -516,7 +516,7 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev)
*/ */
static inline int call_commit_handler(struct net_device * dev) static inline int call_commit_handler(struct net_device * dev)
{ {
if((netif_running(dev)) && if ((netif_running(dev)) &&
(dev->wireless_handlers->standard[0] != NULL)) { (dev->wireless_handlers->standard[0] != NULL)) {
/* Call the commit handler on the driver */ /* Call the commit handler on the driver */
return dev->wireless_handlers->standard[0](dev, NULL, return dev->wireless_handlers->standard[0](dev, NULL,
...@@ -577,7 +577,7 @@ static int iw_handler_get_iwstats(struct net_device * dev, ...@@ -577,7 +577,7 @@ static int iw_handler_get_iwstats(struct net_device * dev,
wrqu->data.length = sizeof(struct iw_statistics); wrqu->data.length = sizeof(struct iw_statistics);
/* Check if we need to clear the updated flag */ /* Check if we need to clear the updated flag */
if(wrqu->data.flags != 0) if (wrqu->data.flags != 0)
stats->qual.updated &= ~IW_QUAL_ALL_UPDATED; stats->qual.updated &= ~IW_QUAL_ALL_UPDATED;
return 0; return 0;
} else } else
...@@ -596,12 +596,12 @@ static int iw_handler_get_private(struct net_device * dev, ...@@ -596,12 +596,12 @@ static int iw_handler_get_private(struct net_device * dev,
char * extra) char * extra)
{ {
/* Check if the driver has something to export */ /* Check if the driver has something to export */
if((dev->wireless_handlers->num_private_args == 0) || if ((dev->wireless_handlers->num_private_args == 0) ||
(dev->wireless_handlers->private_args == NULL)) (dev->wireless_handlers->private_args == NULL))
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* Check if there is enough buffer up there */ /* Check if there is enough buffer up there */
if(wrqu->data.length < dev->wireless_handlers->num_private_args) { if (wrqu->data.length < dev->wireless_handlers->num_private_args) {
/* User space can't know in advance how large the buffer /* User space can't know in advance how large the buffer
* needs to be. Give it a hint, so that we can support * needs to be. Give it a hint, so that we can support
* any size buffer we want somewhat efficiently... */ * any size buffer we want somewhat efficiently... */
...@@ -735,7 +735,7 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -735,7 +735,7 @@ static int ioctl_standard_call(struct net_device * dev,
int ret = -EINVAL; int ret = -EINVAL;
/* Get the description of the IOCTL */ /* Get the description of the IOCTL */
if((cmd - SIOCIWFIRST) >= standard_ioctl_num) if ((cmd - SIOCIWFIRST) >= standard_ioctl_num)
return -EOPNOTSUPP; return -EOPNOTSUPP;
descr = &(standard_ioctl[cmd - SIOCIWFIRST]); descr = &(standard_ioctl[cmd - SIOCIWFIRST]);
...@@ -750,14 +750,14 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -750,14 +750,14 @@ static int ioctl_standard_call(struct net_device * dev,
info.flags = 0; info.flags = 0;
/* Check if we have a pointer to user space data or not */ /* Check if we have a pointer to user space data or not */
if(descr->header_type != IW_HEADER_TYPE_POINT) { if (descr->header_type != IW_HEADER_TYPE_POINT) {
/* No extra arguments. Trivial to handle */ /* No extra arguments. Trivial to handle */
ret = handler(dev, &info, &(iwr->u), NULL); ret = handler(dev, &info, &(iwr->u), NULL);
#ifdef WE_SET_EVENT #ifdef WE_SET_EVENT
/* Generate an event to notify listeners of the change */ /* Generate an event to notify listeners of the change */
if((descr->flags & IW_DESCR_FLAG_EVENT) && if ((descr->flags & IW_DESCR_FLAG_EVENT) &&
((ret == 0) || (ret == -EIWCOMMIT))) ((ret == 0) || (ret == -EIWCOMMIT)))
wireless_send_event(dev, cmd, &(iwr->u), NULL); wireless_send_event(dev, cmd, &(iwr->u), NULL);
#endif /* WE_SET_EVENT */ #endif /* WE_SET_EVENT */
...@@ -800,19 +800,19 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -800,19 +800,19 @@ static int ioctl_standard_call(struct net_device * dev,
iwr->u.data.length -= essid_compat; iwr->u.data.length -= essid_compat;
/* Check what user space is giving us */ /* Check what user space is giving us */
if(IW_IS_SET(cmd)) { if (IW_IS_SET(cmd)) {
/* Check NULL pointer */ /* Check NULL pointer */
if((iwr->u.data.pointer == NULL) && if ((iwr->u.data.pointer == NULL) &&
(iwr->u.data.length != 0)) (iwr->u.data.length != 0))
return -EFAULT; return -EFAULT;
/* Check if number of token fits within bounds */ /* Check if number of token fits within bounds */
if(iwr->u.data.length > descr->max_tokens) if (iwr->u.data.length > descr->max_tokens)
return -E2BIG; return -E2BIG;
if(iwr->u.data.length < descr->min_tokens) if (iwr->u.data.length < descr->min_tokens)
return -EINVAL; return -EINVAL;
} else { } else {
/* Check NULL pointer */ /* Check NULL pointer */
if(iwr->u.data.pointer == NULL) if (iwr->u.data.pointer == NULL)
return -EFAULT; return -EFAULT;
/* Save user space buffer size for checking */ /* Save user space buffer size for checking */
user_length = iwr->u.data.length; user_length = iwr->u.data.length;
...@@ -822,7 +822,7 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -822,7 +822,7 @@ static int ioctl_standard_call(struct net_device * dev,
* implied by the test at the end. */ * implied by the test at the end. */
/* Support for very large requests */ /* Support for very large requests */
if((descr->flags & IW_DESCR_FLAG_NOMAX) && if ((descr->flags & IW_DESCR_FLAG_NOMAX) &&
(user_length > descr->max_tokens)) { (user_length > descr->max_tokens)) {
/* Allow userspace to GET more than max so /* Allow userspace to GET more than max so
* we can support any size GET requests. * we can support any size GET requests.
...@@ -848,7 +848,7 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -848,7 +848,7 @@ static int ioctl_standard_call(struct net_device * dev,
} }
/* If it is a SET, get all the extra data in here */ /* If it is a SET, get all the extra data in here */
if(IW_IS_SET(cmd) && (iwr->u.data.length != 0)) { if (IW_IS_SET(cmd) && (iwr->u.data.length != 0)) {
err = copy_from_user(extra, iwr->u.data.pointer, err = copy_from_user(extra, iwr->u.data.pointer,
iwr->u.data.length * iwr->u.data.length *
descr->token_size); descr->token_size);
...@@ -871,7 +871,7 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -871,7 +871,7 @@ static int ioctl_standard_call(struct net_device * dev,
/* If we have something to return to the user */ /* If we have something to return to the user */
if (!ret && IW_IS_GET(cmd)) { if (!ret && IW_IS_GET(cmd)) {
/* Check if there is enough buffer up there */ /* Check if there is enough buffer up there */
if(user_length < iwr->u.data.length) { if (user_length < iwr->u.data.length) {
kfree(extra); kfree(extra);
return -E2BIG; return -E2BIG;
} }
...@@ -890,9 +890,9 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -890,9 +890,9 @@ static int ioctl_standard_call(struct net_device * dev,
#ifdef WE_SET_EVENT #ifdef WE_SET_EVENT
/* Generate an event to notify listeners of the change */ /* Generate an event to notify listeners of the change */
if((descr->flags & IW_DESCR_FLAG_EVENT) && if ((descr->flags & IW_DESCR_FLAG_EVENT) &&
((ret == 0) || (ret == -EIWCOMMIT))) { ((ret == 0) || (ret == -EIWCOMMIT))) {
if(descr->flags & IW_DESCR_FLAG_RESTRICT) if (descr->flags & IW_DESCR_FLAG_RESTRICT)
/* If the event is restricted, don't /* If the event is restricted, don't
* export the payload */ * export the payload */
wireless_send_event(dev, cmd, &(iwr->u), NULL); wireless_send_event(dev, cmd, &(iwr->u), NULL);
...@@ -907,7 +907,7 @@ static int ioctl_standard_call(struct net_device * dev, ...@@ -907,7 +907,7 @@ static int ioctl_standard_call(struct net_device * dev,
} }
/* Call commit handler if needed and defined */ /* Call commit handler if needed and defined */
if(ret == -EIWCOMMIT) if (ret == -EIWCOMMIT)
ret = call_commit_handler(dev); ret = call_commit_handler(dev);
/* Here, we will generate the appropriate event if needed */ /* Here, we will generate the appropriate event if needed */
...@@ -944,8 +944,8 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -944,8 +944,8 @@ static inline int ioctl_private_call(struct net_device * dev,
int ret = -EINVAL; int ret = -EINVAL;
/* Get the description of the IOCTL */ /* Get the description of the IOCTL */
for(i = 0; i < dev->wireless_handlers->num_private_args; i++) for (i = 0; i < dev->wireless_handlers->num_private_args; i++)
if(cmd == dev->wireless_handlers->private_args[i].cmd) { if (cmd == dev->wireless_handlers->private_args[i].cmd) {
descr = &(dev->wireless_handlers->private_args[i]); descr = &(dev->wireless_handlers->private_args[i]);
break; break;
} }
...@@ -953,7 +953,7 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -953,7 +953,7 @@ static inline int ioctl_private_call(struct net_device * dev,
#ifdef WE_IOCTL_DEBUG #ifdef WE_IOCTL_DEBUG
printk(KERN_DEBUG "%s (WE) : Found private handler for 0x%04X\n", printk(KERN_DEBUG "%s (WE) : Found private handler for 0x%04X\n",
ifr->ifr_name, cmd); ifr->ifr_name, cmd);
if(descr) { if (descr) {
printk(KERN_DEBUG "%s (WE) : Name %s, set %X, get %X\n", printk(KERN_DEBUG "%s (WE) : Name %s, set %X, get %X\n",
dev->name, descr->name, dev->name, descr->name,
descr->set_args, descr->get_args); descr->set_args, descr->get_args);
...@@ -961,11 +961,11 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -961,11 +961,11 @@ static inline int ioctl_private_call(struct net_device * dev,
#endif /* WE_IOCTL_DEBUG */ #endif /* WE_IOCTL_DEBUG */
/* Compute the size of the set/get arguments */ /* Compute the size of the set/get arguments */
if(descr != NULL) { if (descr != NULL) {
if(IW_IS_SET(cmd)) { if (IW_IS_SET(cmd)) {
int offset = 0; /* For sub-ioctls */ int offset = 0; /* For sub-ioctls */
/* Check for sub-ioctl handler */ /* Check for sub-ioctl handler */
if(descr->name[0] == '\0') if (descr->name[0] == '\0')
/* Reserve one int for sub-ioctl index */ /* Reserve one int for sub-ioctl index */
offset = sizeof(__u32); offset = sizeof(__u32);
...@@ -973,7 +973,7 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -973,7 +973,7 @@ static inline int ioctl_private_call(struct net_device * dev,
extra_size = get_priv_size(descr->set_args); extra_size = get_priv_size(descr->set_args);
/* Does it fits in iwr ? */ /* Does it fits in iwr ? */
if((descr->set_args & IW_PRIV_SIZE_FIXED) && if ((descr->set_args & IW_PRIV_SIZE_FIXED) &&
((extra_size + offset) <= IFNAMSIZ)) ((extra_size + offset) <= IFNAMSIZ))
extra_size = 0; extra_size = 0;
} else { } else {
...@@ -981,7 +981,7 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -981,7 +981,7 @@ static inline int ioctl_private_call(struct net_device * dev,
extra_size = get_priv_size(descr->get_args); extra_size = get_priv_size(descr->get_args);
/* Does it fits in iwr ? */ /* Does it fits in iwr ? */
if((descr->get_args & IW_PRIV_SIZE_FIXED) && if ((descr->get_args & IW_PRIV_SIZE_FIXED) &&
(extra_size <= IFNAMSIZ)) (extra_size <= IFNAMSIZ))
extra_size = 0; extra_size = 0;
} }
...@@ -992,7 +992,7 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -992,7 +992,7 @@ static inline int ioctl_private_call(struct net_device * dev,
info.flags = 0; info.flags = 0;
/* Check if we have a pointer to user space data or not. */ /* Check if we have a pointer to user space data or not. */
if(extra_size == 0) { if (extra_size == 0) {
/* No extra arguments. Trivial to handle */ /* No extra arguments. Trivial to handle */
ret = handler(dev, &info, &(iwr->u), (char *) &(iwr->u)); ret = handler(dev, &info, &(iwr->u), (char *) &(iwr->u));
} else { } else {
...@@ -1000,19 +1000,19 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -1000,19 +1000,19 @@ static inline int ioctl_private_call(struct net_device * dev,
int err; int err;
/* Check what user space is giving us */ /* Check what user space is giving us */
if(IW_IS_SET(cmd)) { if (IW_IS_SET(cmd)) {
/* Check NULL pointer */ /* Check NULL pointer */
if((iwr->u.data.pointer == NULL) && if ((iwr->u.data.pointer == NULL) &&
(iwr->u.data.length != 0)) (iwr->u.data.length != 0))
return -EFAULT; return -EFAULT;
/* Does it fits within bounds ? */ /* Does it fits within bounds ? */
if(iwr->u.data.length > (descr->set_args & if (iwr->u.data.length > (descr->set_args &
IW_PRIV_SIZE_MASK)) IW_PRIV_SIZE_MASK))
return -E2BIG; return -E2BIG;
} else { } else {
/* Check NULL pointer */ /* Check NULL pointer */
if(iwr->u.data.pointer == NULL) if (iwr->u.data.pointer == NULL)
return -EFAULT; return -EFAULT;
} }
...@@ -1029,7 +1029,7 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -1029,7 +1029,7 @@ static inline int ioctl_private_call(struct net_device * dev,
} }
/* If it is a SET, get all the extra data in here */ /* If it is a SET, get all the extra data in here */
if(IW_IS_SET(cmd) && (iwr->u.data.length != 0)) { if (IW_IS_SET(cmd) && (iwr->u.data.length != 0)) {
err = copy_from_user(extra, iwr->u.data.pointer, err = copy_from_user(extra, iwr->u.data.pointer,
extra_size); extra_size);
if (err) { if (err) {
...@@ -1071,7 +1071,7 @@ static inline int ioctl_private_call(struct net_device * dev, ...@@ -1071,7 +1071,7 @@ static inline int ioctl_private_call(struct net_device * dev,
/* Call commit handler if needed and defined */ /* Call commit handler if needed and defined */
if(ret == -EIWCOMMIT) if (ret == -EIWCOMMIT)
ret = call_commit_handler(dev); ret = call_commit_handler(dev);
return ret; return ret;
...@@ -1098,51 +1098,50 @@ int wireless_process_ioctl(struct ifreq *ifr, unsigned int cmd) ...@@ -1098,51 +1098,50 @@ int wireless_process_ioctl(struct ifreq *ifr, unsigned int cmd)
/* A bunch of special cases, then the generic case... /* A bunch of special cases, then the generic case...
* Note that 'cmd' is already filtered in dev_ioctl() with * Note that 'cmd' is already filtered in dev_ioctl() with
* (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */ * (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) */
switch(cmd) switch (cmd) {
{ case SIOCGIWSTATS:
case SIOCGIWSTATS: /* Get Wireless Stats */
/* Get Wireless Stats */ return ioctl_standard_call(dev,
ifr,
cmd,
&iw_handler_get_iwstats);
case SIOCGIWPRIV:
/* Check if we have some wireless handlers defined */
if (dev->wireless_handlers != NULL) {
/* We export to user space the definition of
* the private handler ourselves */
return ioctl_standard_call(dev, return ioctl_standard_call(dev,
ifr, ifr,
cmd, cmd,
&iw_handler_get_iwstats); &iw_handler_get_private);
}
case SIOCGIWPRIV: // ## Fall-through for old API ##
/* Check if we have some wireless handlers defined */ default:
if(dev->wireless_handlers != NULL) { /* Generic IOCTL */
/* We export to user space the definition of /* Basic check */
* the private handler ourselves */ if (!netif_device_present(dev))
return -ENODEV;
/* New driver API : try to find the handler */
handler = get_handler(dev, cmd);
if (handler != NULL) {
/* Standard and private are not the same */
if (cmd < SIOCIWFIRSTPRIV)
return ioctl_standard_call(dev, return ioctl_standard_call(dev,
ifr, ifr,
cmd, cmd,
&iw_handler_get_private); handler);
} else
// ## Fall-through for old API ## return ioctl_private_call(dev,
default: ifr,
/* Generic IOCTL */ cmd,
/* Basic check */ handler);
if (!netif_device_present(dev)) }
return -ENODEV; /* Old driver API : call driver ioctl handler */
/* New driver API : try to find the handler */ if (dev->do_ioctl) {
handler = get_handler(dev, cmd); return dev->do_ioctl(dev, ifr, cmd);
if(handler != NULL) { }
/* Standard and private are not the same */ return -EOPNOTSUPP;
if(cmd < SIOCIWFIRSTPRIV)
return ioctl_standard_call(dev,
ifr,
cmd,
handler);
else
return ioctl_private_call(dev,
ifr,
cmd,
handler);
}
/* Old driver API : call driver ioctl handler */
if (dev->do_ioctl) {
return dev->do_ioctl(dev, ifr, cmd);
}
return -EOPNOTSUPP;
} }
/* Not reached */ /* Not reached */
return -EINVAL; return -EINVAL;
...@@ -1196,7 +1195,7 @@ static int rtnetlink_standard_get(struct net_device * dev, ...@@ -1196,7 +1195,7 @@ static int rtnetlink_standard_get(struct net_device * dev,
/* Get the description of the Request */ /* Get the description of the Request */
cmd = request->cmd; cmd = request->cmd;
if((cmd - SIOCIWFIRST) >= standard_ioctl_num) if ((cmd - SIOCIWFIRST) >= standard_ioctl_num)
return -EOPNOTSUPP; return -EOPNOTSUPP;
descr = &(standard_ioctl[cmd - SIOCIWFIRST]); descr = &(standard_ioctl[cmd - SIOCIWFIRST]);
...@@ -1208,7 +1207,7 @@ static int rtnetlink_standard_get(struct net_device * dev, ...@@ -1208,7 +1207,7 @@ static int rtnetlink_standard_get(struct net_device * dev,
/* Check if wrqu is complete */ /* Check if wrqu is complete */
hdr_len = event_type_size[descr->header_type]; hdr_len = event_type_size[descr->header_type];
if(request_len < hdr_len) { if (request_len < hdr_len) {
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
printk(KERN_DEBUG printk(KERN_DEBUG
"%s (WE.r) : Wireless request too short (%d)\n", "%s (WE.r) : Wireless request too short (%d)\n",
...@@ -1222,7 +1221,7 @@ static int rtnetlink_standard_get(struct net_device * dev, ...@@ -1222,7 +1221,7 @@ static int rtnetlink_standard_get(struct net_device * dev,
info.flags = 0; info.flags = 0;
/* Check if we have extra data in the reply or not */ /* Check if we have extra data in the reply or not */
if(descr->header_type != IW_HEADER_TYPE_POINT) { if (descr->header_type != IW_HEADER_TYPE_POINT) {
/* Create the kernel buffer that we will return. /* Create the kernel buffer that we will return.
* It's at an offset to match the TYPE_POINT case... */ * It's at an offset to match the TYPE_POINT case... */
...@@ -1254,7 +1253,7 @@ static int rtnetlink_standard_get(struct net_device * dev, ...@@ -1254,7 +1253,7 @@ static int rtnetlink_standard_get(struct net_device * dev,
* for max space. Easier, and won't last long... */ * for max space. Easier, and won't last long... */
extra_size = descr->max_tokens * descr->token_size; extra_size = descr->max_tokens * descr->token_size;
/* Support for very large requests */ /* Support for very large requests */
if((descr->flags & IW_DESCR_FLAG_NOMAX) && if ((descr->flags & IW_DESCR_FLAG_NOMAX) &&
(wrqu_point.data.length > descr->max_tokens)) (wrqu_point.data.length > descr->max_tokens))
extra_size = (wrqu_point.data.length extra_size = (wrqu_point.data.length
* descr->token_size); * descr->token_size);
...@@ -1299,7 +1298,7 @@ static int rtnetlink_standard_get(struct net_device * dev, ...@@ -1299,7 +1298,7 @@ static int rtnetlink_standard_get(struct net_device * dev,
#endif /* WE_RTNETLINK_DEBUG */ #endif /* WE_RTNETLINK_DEBUG */
/* Check if there is enough buffer up there */ /* Check if there is enough buffer up there */
if(wrqu_point.data.length < wrqu->data.length) if (wrqu_point.data.length < wrqu->data.length)
ret = -E2BIG; ret = -E2BIG;
} }
...@@ -1309,7 +1308,7 @@ static int rtnetlink_standard_get(struct net_device * dev, ...@@ -1309,7 +1308,7 @@ static int rtnetlink_standard_get(struct net_device * dev,
*p_len = request->len; *p_len = request->len;
} else { } else {
/* Cleanup */ /* Cleanup */
if(buffer) if (buffer)
kfree(buffer); kfree(buffer);
} }
...@@ -1338,7 +1337,7 @@ static inline int rtnetlink_standard_set(struct net_device * dev, ...@@ -1338,7 +1337,7 @@ static inline int rtnetlink_standard_set(struct net_device * dev,
/* Get the description of the Request */ /* Get the description of the Request */
cmd = request->cmd; cmd = request->cmd;
if((cmd - SIOCIWFIRST) >= standard_ioctl_num) if ((cmd - SIOCIWFIRST) >= standard_ioctl_num)
return -EOPNOTSUPP; return -EOPNOTSUPP;
descr = &(standard_ioctl[cmd - SIOCIWFIRST]); descr = &(standard_ioctl[cmd - SIOCIWFIRST]);
...@@ -1353,7 +1352,7 @@ static inline int rtnetlink_standard_set(struct net_device * dev, ...@@ -1353,7 +1352,7 @@ static inline int rtnetlink_standard_set(struct net_device * dev,
/* Check if wrqu is complete */ /* Check if wrqu is complete */
hdr_len = event_type_pk_size[descr->header_type]; hdr_len = event_type_pk_size[descr->header_type];
if(request_len < hdr_len) { if (request_len < hdr_len) {
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
printk(KERN_DEBUG printk(KERN_DEBUG
"%s (WE.r) : Wireless request too short (%d)\n", "%s (WE.r) : Wireless request too short (%d)\n",
...@@ -1367,7 +1366,7 @@ static inline int rtnetlink_standard_set(struct net_device * dev, ...@@ -1367,7 +1366,7 @@ static inline int rtnetlink_standard_set(struct net_device * dev,
info.flags = 0; info.flags = 0;
/* Check if we have extra data in the request or not */ /* Check if we have extra data in the request or not */
if(descr->header_type != IW_HEADER_TYPE_POINT) { if (descr->header_type != IW_HEADER_TYPE_POINT) {
/* No extra arguments. Trivial to handle */ /* No extra arguments. Trivial to handle */
ret = handler(dev, &info, wrqu, NULL); ret = handler(dev, &info, wrqu, NULL);
...@@ -1382,16 +1381,16 @@ static inline int rtnetlink_standard_set(struct net_device * dev, ...@@ -1382,16 +1381,16 @@ static inline int rtnetlink_standard_set(struct net_device * dev,
wrqu = &wrqu_point; wrqu = &wrqu_point;
/* Check if number of token fits within bounds */ /* Check if number of token fits within bounds */
if(wrqu_point.data.length > descr->max_tokens) if (wrqu_point.data.length > descr->max_tokens)
return -E2BIG; return -E2BIG;
if(wrqu_point.data.length < descr->min_tokens) if (wrqu_point.data.length < descr->min_tokens)
return -EINVAL; return -EINVAL;
/* Real length of payload */ /* Real length of payload */
extra_len = wrqu_point.data.length * descr->token_size; extra_len = wrqu_point.data.length * descr->token_size;
/* Check if request is self consistent */ /* Check if request is self consistent */
if((request_len - hdr_len) < extra_len) { if ((request_len - hdr_len) < extra_len) {
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
printk(KERN_DEBUG "%s (WE.r) : Wireless request data too short (%d)\n", printk(KERN_DEBUG "%s (WE.r) : Wireless request data too short (%d)\n",
dev->name, extra_size); dev->name, extra_size);
...@@ -1420,9 +1419,9 @@ static inline int rtnetlink_standard_set(struct net_device * dev, ...@@ -1420,9 +1419,9 @@ static inline int rtnetlink_standard_set(struct net_device * dev,
#ifdef WE_SET_EVENT #ifdef WE_SET_EVENT
/* Generate an event to notify listeners of the change */ /* Generate an event to notify listeners of the change */
if((descr->flags & IW_DESCR_FLAG_EVENT) && if ((descr->flags & IW_DESCR_FLAG_EVENT) &&
((ret == 0) || (ret == -EIWCOMMIT))) { ((ret == 0) || (ret == -EIWCOMMIT))) {
if(descr->flags & IW_DESCR_FLAG_RESTRICT) if (descr->flags & IW_DESCR_FLAG_RESTRICT)
/* If the event is restricted, don't /* If the event is restricted, don't
* export the payload */ * export the payload */
wireless_send_event(dev, cmd, wrqu, NULL); wireless_send_event(dev, cmd, wrqu, NULL);
...@@ -1432,11 +1431,11 @@ static inline int rtnetlink_standard_set(struct net_device * dev, ...@@ -1432,11 +1431,11 @@ static inline int rtnetlink_standard_set(struct net_device * dev,
#endif /* WE_SET_EVENT */ #endif /* WE_SET_EVENT */
/* Cleanup - I told you it wasn't that long ;-) */ /* Cleanup - I told you it wasn't that long ;-) */
if(extra) if (extra)
kfree(extra); kfree(extra);
/* Call commit handler if needed and defined */ /* Call commit handler if needed and defined */
if(ret == -EIWCOMMIT) if (ret == -EIWCOMMIT)
ret = call_commit_handler(dev); ret = call_commit_handler(dev);
return ret; return ret;
...@@ -1477,12 +1476,12 @@ static inline int rtnetlink_private_get(struct net_device * dev, ...@@ -1477,12 +1476,12 @@ static inline int rtnetlink_private_get(struct net_device * dev,
/* Get the description of the Request */ /* Get the description of the Request */
cmd = request->cmd; cmd = request->cmd;
for(i = 0; i < dev->wireless_handlers->num_private_args; i++) for (i = 0; i < dev->wireless_handlers->num_private_args; i++)
if(cmd == dev->wireless_handlers->private_args[i].cmd) { if (cmd == dev->wireless_handlers->private_args[i].cmd) {
descr = &(dev->wireless_handlers->private_args[i]); descr = &(dev->wireless_handlers->private_args[i]);
break; break;
} }
if(descr == NULL) if (descr == NULL)
return -EOPNOTSUPP; return -EOPNOTSUPP;
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
...@@ -1496,7 +1495,7 @@ static inline int rtnetlink_private_get(struct net_device * dev, ...@@ -1496,7 +1495,7 @@ static inline int rtnetlink_private_get(struct net_device * dev,
extra_size = get_priv_size(descr->get_args); extra_size = get_priv_size(descr->get_args);
/* Does it fits in wrqu ? */ /* Does it fits in wrqu ? */
if((descr->get_args & IW_PRIV_SIZE_FIXED) && if ((descr->get_args & IW_PRIV_SIZE_FIXED) &&
(extra_size <= IFNAMSIZ)) { (extra_size <= IFNAMSIZ)) {
hdr_len = extra_size; hdr_len = extra_size;
extra_size = 0; extra_size = 0;
...@@ -1505,7 +1504,7 @@ static inline int rtnetlink_private_get(struct net_device * dev, ...@@ -1505,7 +1504,7 @@ static inline int rtnetlink_private_get(struct net_device * dev,
} }
/* Check if wrqu is complete */ /* Check if wrqu is complete */
if(request_len < hdr_len) { if (request_len < hdr_len) {
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
printk(KERN_DEBUG printk(KERN_DEBUG
"%s (WE.r) : Wireless request too short (%d)\n", "%s (WE.r) : Wireless request too short (%d)\n",
...@@ -1519,7 +1518,7 @@ static inline int rtnetlink_private_get(struct net_device * dev, ...@@ -1519,7 +1518,7 @@ static inline int rtnetlink_private_get(struct net_device * dev,
info.flags = 0; info.flags = 0;
/* Check if we have a pointer to user space data or not. */ /* Check if we have a pointer to user space data or not. */
if(extra_size == 0) { if (extra_size == 0) {
/* Create the kernel buffer that we will return. /* Create the kernel buffer that we will return.
* It's at an offset to match the TYPE_POINT case... */ * It's at an offset to match the TYPE_POINT case... */
...@@ -1591,7 +1590,7 @@ static inline int rtnetlink_private_get(struct net_device * dev, ...@@ -1591,7 +1590,7 @@ static inline int rtnetlink_private_get(struct net_device * dev,
*p_len = request->len; *p_len = request->len;
} else { } else {
/* Cleanup */ /* Cleanup */
if(buffer) if (buffer)
kfree(buffer); kfree(buffer);
} }
...@@ -1632,12 +1631,12 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1632,12 +1631,12 @@ static inline int rtnetlink_private_set(struct net_device * dev,
/* Get the description of the Request */ /* Get the description of the Request */
cmd = request->cmd; cmd = request->cmd;
for(i = 0; i < dev->wireless_handlers->num_private_args; i++) for (i = 0; i < dev->wireless_handlers->num_private_args; i++)
if(cmd == dev->wireless_handlers->private_args[i].cmd) { if (cmd == dev->wireless_handlers->private_args[i].cmd) {
descr = &(dev->wireless_handlers->private_args[i]); descr = &(dev->wireless_handlers->private_args[i]);
break; break;
} }
if(descr == NULL) if (descr == NULL)
return -EOPNOTSUPP; return -EOPNOTSUPP;
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
...@@ -1649,7 +1648,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1649,7 +1648,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
/* Compute the size of the set arguments */ /* Compute the size of the set arguments */
/* Check for sub-ioctl handler */ /* Check for sub-ioctl handler */
if(descr->name[0] == '\0') if (descr->name[0] == '\0')
/* Reserve one int for sub-ioctl index */ /* Reserve one int for sub-ioctl index */
offset = sizeof(__u32); offset = sizeof(__u32);
...@@ -1657,7 +1656,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1657,7 +1656,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
extra_size = get_priv_size(descr->set_args); extra_size = get_priv_size(descr->set_args);
/* Does it fits in wrqu ? */ /* Does it fits in wrqu ? */
if((descr->set_args & IW_PRIV_SIZE_FIXED) && if ((descr->set_args & IW_PRIV_SIZE_FIXED) &&
(extra_size <= IFNAMSIZ)) { (extra_size <= IFNAMSIZ)) {
hdr_len = IW_EV_LCP_PK_LEN + extra_size; hdr_len = IW_EV_LCP_PK_LEN + extra_size;
extra_size = 0; extra_size = 0;
...@@ -1669,7 +1668,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1669,7 +1668,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
wrqu = (union iwreq_data *) (((char *) request) + IW_EV_LCP_PK_LEN); wrqu = (union iwreq_data *) (((char *) request) + IW_EV_LCP_PK_LEN);
/* Check if wrqu is complete */ /* Check if wrqu is complete */
if(request_len < hdr_len) { if (request_len < hdr_len) {
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
printk(KERN_DEBUG printk(KERN_DEBUG
"%s (WE.r) : Wireless request too short (%d)\n", "%s (WE.r) : Wireless request too short (%d)\n",
...@@ -1683,7 +1682,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1683,7 +1682,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
info.flags = 0; info.flags = 0;
/* Check if we have a pointer to user space data or not. */ /* Check if we have a pointer to user space data or not. */
if(extra_size == 0) { if (extra_size == 0) {
/* No extra arguments. Trivial to handle */ /* No extra arguments. Trivial to handle */
ret = handler(dev, &info, wrqu, (char *) wrqu); ret = handler(dev, &info, wrqu, (char *) wrqu);
...@@ -1696,7 +1695,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1696,7 +1695,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
wrqu, IW_EV_POINT_PK_LEN - IW_EV_LCP_PK_LEN); wrqu, IW_EV_POINT_PK_LEN - IW_EV_LCP_PK_LEN);
/* Does it fits within bounds ? */ /* Does it fits within bounds ? */
if(wrqu_point.data.length > (descr->set_args & if (wrqu_point.data.length > (descr->set_args &
IW_PRIV_SIZE_MASK)) IW_PRIV_SIZE_MASK))
return -E2BIG; return -E2BIG;
...@@ -1704,7 +1703,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1704,7 +1703,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
extra_len = adjust_priv_size(descr->set_args, &wrqu_point); extra_len = adjust_priv_size(descr->set_args, &wrqu_point);
/* Check if request is self consistent */ /* Check if request is self consistent */
if((request_len - hdr_len) < extra_len) { if ((request_len - hdr_len) < extra_len) {
#ifdef WE_RTNETLINK_DEBUG #ifdef WE_RTNETLINK_DEBUG
printk(KERN_DEBUG "%s (WE.r) : Wireless request data too short (%d)\n", printk(KERN_DEBUG "%s (WE.r) : Wireless request data too short (%d)\n",
dev->name, extra_size); dev->name, extra_size);
...@@ -1734,7 +1733,7 @@ static inline int rtnetlink_private_set(struct net_device * dev, ...@@ -1734,7 +1733,7 @@ static inline int rtnetlink_private_set(struct net_device * dev,
} }
/* Call commit handler if needed and defined */ /* Call commit handler if needed and defined */
if(ret == -EIWCOMMIT) if (ret == -EIWCOMMIT)
ret = call_commit_handler(dev); ret = call_commit_handler(dev);
return ret; return ret;
...@@ -1756,21 +1755,21 @@ int wireless_rtnetlink_get(struct net_device * dev, ...@@ -1756,21 +1755,21 @@ int wireless_rtnetlink_get(struct net_device * dev,
iw_handler handler; iw_handler handler;
/* Check length */ /* Check length */
if(len < IW_EV_LCP_PK_LEN) { if (len < IW_EV_LCP_PK_LEN) {
printk(KERN_DEBUG "%s (WE.r) : RtNetlink request too short (%d)\n", printk(KERN_DEBUG "%s (WE.r) : RtNetlink request too short (%d)\n",
dev->name, len); dev->name, len);
return -EINVAL; return -EINVAL;
} }
/* ReCheck length (len may have padding) */ /* ReCheck length (len may have padding) */
if(request->len > len) { if (request->len > len) {
printk(KERN_DEBUG "%s (WE.r) : RtNetlink request len invalid (%d-%d)\n", printk(KERN_DEBUG "%s (WE.r) : RtNetlink request len invalid (%d-%d)\n",
dev->name, request->len, len); dev->name, request->len, len);
return -EINVAL; return -EINVAL;
} }
/* Only accept GET requests in here */ /* Only accept GET requests in here */
if(!IW_IS_GET(request->cmd)) if (!IW_IS_GET(request->cmd))
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* If command is `get the encoding parameters', check if /* If command is `get the encoding parameters', check if
...@@ -1782,16 +1781,16 @@ int wireless_rtnetlink_get(struct net_device * dev, ...@@ -1782,16 +1781,16 @@ int wireless_rtnetlink_get(struct net_device * dev,
} }
/* Special cases */ /* Special cases */
if(request->cmd == SIOCGIWSTATS) if (request->cmd == SIOCGIWSTATS)
/* Get Wireless Stats */ /* Get Wireless Stats */
return rtnetlink_standard_get(dev, return rtnetlink_standard_get(dev,
request, request,
request->len, request->len,
&iw_handler_get_iwstats, &iw_handler_get_iwstats,
p_buf, p_len); p_buf, p_len);
if(request->cmd == SIOCGIWPRIV) { if (request->cmd == SIOCGIWPRIV) {
/* Check if we have some wireless handlers defined */ /* Check if we have some wireless handlers defined */
if(dev->wireless_handlers == NULL) if (dev->wireless_handlers == NULL)
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* Get Wireless Stats */ /* Get Wireless Stats */
return rtnetlink_standard_get(dev, return rtnetlink_standard_get(dev,
...@@ -1807,9 +1806,9 @@ int wireless_rtnetlink_get(struct net_device * dev, ...@@ -1807,9 +1806,9 @@ int wireless_rtnetlink_get(struct net_device * dev,
/* Try to find the handler */ /* Try to find the handler */
handler = get_handler(dev, request->cmd); handler = get_handler(dev, request->cmd);
if(handler != NULL) { if (handler != NULL) {
/* Standard and private are not the same */ /* Standard and private are not the same */
if(request->cmd < SIOCIWFIRSTPRIV) if (request->cmd < SIOCIWFIRSTPRIV)
return rtnetlink_standard_get(dev, return rtnetlink_standard_get(dev,
request, request,
request->len, request->len,
...@@ -1840,21 +1839,21 @@ int wireless_rtnetlink_set(struct net_device * dev, ...@@ -1840,21 +1839,21 @@ int wireless_rtnetlink_set(struct net_device * dev,
iw_handler handler; iw_handler handler;
/* Check length */ /* Check length */
if(len < IW_EV_LCP_PK_LEN) { if (len < IW_EV_LCP_PK_LEN) {
printk(KERN_DEBUG "%s (WE.r) : RtNetlink request too short (%d)\n", printk(KERN_DEBUG "%s (WE.r) : RtNetlink request too short (%d)\n",
dev->name, len); dev->name, len);
return -EINVAL; return -EINVAL;
} }
/* ReCheck length (len may have padding) */ /* ReCheck length (len may have padding) */
if(request->len > len) { if (request->len > len) {
printk(KERN_DEBUG "%s (WE.r) : RtNetlink request len invalid (%d-%d)\n", printk(KERN_DEBUG "%s (WE.r) : RtNetlink request len invalid (%d-%d)\n",
dev->name, request->len, len); dev->name, request->len, len);
return -EINVAL; return -EINVAL;
} }
/* Only accept SET requests in here */ /* Only accept SET requests in here */
if(!IW_IS_SET(request->cmd)) if (!IW_IS_SET(request->cmd))
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* Basic check */ /* Basic check */
...@@ -1863,9 +1862,9 @@ int wireless_rtnetlink_set(struct net_device * dev, ...@@ -1863,9 +1862,9 @@ int wireless_rtnetlink_set(struct net_device * dev,
/* New driver API : try to find the handler */ /* New driver API : try to find the handler */
handler = get_handler(dev, request->cmd); handler = get_handler(dev, request->cmd);
if(handler != NULL) { if (handler != NULL) {
/* Standard and private are not the same */ /* Standard and private are not the same */
if(request->cmd < SIOCIWFIRSTPRIV) if (request->cmd < SIOCIWFIRSTPRIV)
return rtnetlink_standard_set(dev, return rtnetlink_standard_set(dev,
request, request,
request->len, request->len,
...@@ -2015,17 +2014,17 @@ void wireless_send_event(struct net_device * dev, ...@@ -2015,17 +2014,17 @@ void wireless_send_event(struct net_device * dev,
unsigned cmd_index; /* *MUST* be unsigned */ unsigned cmd_index; /* *MUST* be unsigned */
/* Get the description of the Event */ /* Get the description of the Event */
if(cmd <= SIOCIWLAST) { if (cmd <= SIOCIWLAST) {
cmd_index = cmd - SIOCIWFIRST; cmd_index = cmd - SIOCIWFIRST;
if(cmd_index < standard_ioctl_num) if (cmd_index < standard_ioctl_num)
descr = &(standard_ioctl[cmd_index]); descr = &(standard_ioctl[cmd_index]);
} else { } else {
cmd_index = cmd - IWEVFIRST; cmd_index = cmd - IWEVFIRST;
if(cmd_index < standard_event_num) if (cmd_index < standard_event_num)
descr = &(standard_event[cmd_index]); descr = &(standard_event[cmd_index]);
} }
/* Don't accept unknown events */ /* Don't accept unknown events */
if(descr == NULL) { if (descr == NULL) {
/* Note : we don't return an error to the driver, because /* Note : we don't return an error to the driver, because
* the driver would not know what to do about it. It can't * the driver would not know what to do about it. It can't
* return an error to the user, because the event is not * return an error to the user, because the event is not
...@@ -2044,18 +2043,18 @@ void wireless_send_event(struct net_device * dev, ...@@ -2044,18 +2043,18 @@ void wireless_send_event(struct net_device * dev,
#endif /* WE_EVENT_DEBUG */ #endif /* WE_EVENT_DEBUG */
/* Check extra parameters and set extra_len */ /* Check extra parameters and set extra_len */
if(descr->header_type == IW_HEADER_TYPE_POINT) { if (descr->header_type == IW_HEADER_TYPE_POINT) {
/* Check if number of token fits within bounds */ /* Check if number of token fits within bounds */
if(wrqu->data.length > descr->max_tokens) { if (wrqu->data.length > descr->max_tokens) {
printk(KERN_ERR "%s (WE) : Wireless Event too big (%d)\n", dev->name, wrqu->data.length); printk(KERN_ERR "%s (WE) : Wireless Event too big (%d)\n", dev->name, wrqu->data.length);
return; return;
} }
if(wrqu->data.length < descr->min_tokens) { if (wrqu->data.length < descr->min_tokens) {
printk(KERN_ERR "%s (WE) : Wireless Event too small (%d)\n", dev->name, wrqu->data.length); printk(KERN_ERR "%s (WE) : Wireless Event too small (%d)\n", dev->name, wrqu->data.length);
return; return;
} }
/* Calculate extra_len - extra is NULL for restricted events */ /* Calculate extra_len - extra is NULL for restricted events */
if(extra != NULL) if (extra != NULL)
extra_len = wrqu->data.length * descr->token_size; extra_len = wrqu->data.length * descr->token_size;
/* Always at an offset in wrqu */ /* Always at an offset in wrqu */
wrqu_off = IW_EV_POINT_OFF; wrqu_off = IW_EV_POINT_OFF;
...@@ -2074,14 +2073,14 @@ void wireless_send_event(struct net_device * dev, ...@@ -2074,14 +2073,14 @@ void wireless_send_event(struct net_device * dev,
/* Create temporary buffer to hold the event */ /* Create temporary buffer to hold the event */
event = kmalloc(event_len, GFP_ATOMIC); event = kmalloc(event_len, GFP_ATOMIC);
if(event == NULL) if (event == NULL)
return; return;
/* Fill event */ /* Fill event */
event->len = event_len; event->len = event_len;
event->cmd = cmd; event->cmd = cmd;
memcpy(&event->u, ((char *) wrqu) + wrqu_off, hdr_len - IW_EV_LCP_LEN); memcpy(&event->u, ((char *) wrqu) + wrqu_off, hdr_len - IW_EV_LCP_LEN);
if(extra != NULL) if (extra != NULL)
memcpy(((char *) event) + hdr_len, extra, extra_len); memcpy(((char *) event) + hdr_len, extra, extra_len);
#ifdef WE_EVENT_RTNETLINK #ifdef WE_EVENT_RTNETLINK
...@@ -2116,7 +2115,7 @@ void wireless_send_event(struct net_device * dev, ...@@ -2116,7 +2115,7 @@ void wireless_send_event(struct net_device * dev,
static inline struct iw_spy_data * get_spydata(struct net_device *dev) static inline struct iw_spy_data * get_spydata(struct net_device *dev)
{ {
/* This is the new way */ /* This is the new way */
if(dev->wireless_data) if (dev->wireless_data)
return(dev->wireless_data->spy_data); return(dev->wireless_data->spy_data);
return NULL; return NULL;
} }
...@@ -2134,7 +2133,7 @@ int iw_handler_set_spy(struct net_device * dev, ...@@ -2134,7 +2133,7 @@ int iw_handler_set_spy(struct net_device * dev,
struct sockaddr * address = (struct sockaddr *) extra; struct sockaddr * address = (struct sockaddr *) extra;
/* Make sure driver is not buggy or using the old API */ /* Make sure driver is not buggy or using the old API */
if(!spydata) if (!spydata)
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* Disable spy collection while we copy the addresses. /* Disable spy collection while we copy the addresses.
...@@ -2151,11 +2150,11 @@ int iw_handler_set_spy(struct net_device * dev, ...@@ -2151,11 +2150,11 @@ int iw_handler_set_spy(struct net_device * dev,
smp_wmb(); smp_wmb();
/* Are there are addresses to copy? */ /* Are there are addresses to copy? */
if(wrqu->data.length > 0) { if (wrqu->data.length > 0) {
int i; int i;
/* Copy addresses */ /* Copy addresses */
for(i = 0; i < wrqu->data.length; i++) for (i = 0; i < wrqu->data.length; i++)
memcpy(spydata->spy_address[i], address[i].sa_data, memcpy(spydata->spy_address[i], address[i].sa_data,
ETH_ALEN); ETH_ALEN);
/* Reset stats */ /* Reset stats */
...@@ -2199,23 +2198,23 @@ int iw_handler_get_spy(struct net_device * dev, ...@@ -2199,23 +2198,23 @@ int iw_handler_get_spy(struct net_device * dev,
int i; int i;
/* Make sure driver is not buggy or using the old API */ /* Make sure driver is not buggy or using the old API */
if(!spydata) if (!spydata)
return -EOPNOTSUPP; return -EOPNOTSUPP;
wrqu->data.length = spydata->spy_number; wrqu->data.length = spydata->spy_number;
/* Copy addresses. */ /* Copy addresses. */
for(i = 0; i < spydata->spy_number; i++) { for (i = 0; i < spydata->spy_number; i++) {
memcpy(address[i].sa_data, spydata->spy_address[i], ETH_ALEN); memcpy(address[i].sa_data, spydata->spy_address[i], ETH_ALEN);
address[i].sa_family = AF_UNIX; address[i].sa_family = AF_UNIX;
} }
/* Copy stats to the user buffer (just after). */ /* Copy stats to the user buffer (just after). */
if(spydata->spy_number > 0) if (spydata->spy_number > 0)
memcpy(extra + (sizeof(struct sockaddr) *spydata->spy_number), memcpy(extra + (sizeof(struct sockaddr) *spydata->spy_number),
spydata->spy_stat, spydata->spy_stat,
sizeof(struct iw_quality) * spydata->spy_number); sizeof(struct iw_quality) * spydata->spy_number);
/* Reset updated flags. */ /* Reset updated flags. */
for(i = 0; i < spydata->spy_number; i++) for (i = 0; i < spydata->spy_number; i++)
spydata->spy_stat[i].updated &= ~IW_QUAL_ALL_UPDATED; spydata->spy_stat[i].updated &= ~IW_QUAL_ALL_UPDATED;
return 0; return 0;
} }
...@@ -2233,7 +2232,7 @@ int iw_handler_set_thrspy(struct net_device * dev, ...@@ -2233,7 +2232,7 @@ int iw_handler_set_thrspy(struct net_device * dev,
struct iw_thrspy * threshold = (struct iw_thrspy *) extra; struct iw_thrspy * threshold = (struct iw_thrspy *) extra;
/* Make sure driver is not buggy or using the old API */ /* Make sure driver is not buggy or using the old API */
if(!spydata) if (!spydata)
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* Just do it */ /* Just do it */
...@@ -2263,7 +2262,7 @@ int iw_handler_get_thrspy(struct net_device * dev, ...@@ -2263,7 +2262,7 @@ int iw_handler_get_thrspy(struct net_device * dev,
struct iw_thrspy * threshold = (struct iw_thrspy *) extra; struct iw_thrspy * threshold = (struct iw_thrspy *) extra;
/* Make sure driver is not buggy or using the old API */ /* Make sure driver is not buggy or using the old API */
if(!spydata) if (!spydata)
return -EOPNOTSUPP; return -EOPNOTSUPP;
/* Just do it */ /* Just do it */
...@@ -2327,7 +2326,7 @@ void wireless_spy_update(struct net_device * dev, ...@@ -2327,7 +2326,7 @@ void wireless_spy_update(struct net_device * dev,
int match = -1; int match = -1;
/* Make sure driver is not buggy or using the old API */ /* Make sure driver is not buggy or using the old API */
if(!spydata) if (!spydata)
return; return;
#ifdef WE_SPY_DEBUG #ifdef WE_SPY_DEBUG
...@@ -2335,8 +2334,8 @@ void wireless_spy_update(struct net_device * dev, ...@@ -2335,8 +2334,8 @@ void wireless_spy_update(struct net_device * dev,
#endif /* WE_SPY_DEBUG */ #endif /* WE_SPY_DEBUG */
/* Update all records that match */ /* Update all records that match */
for(i = 0; i < spydata->spy_number; i++) for (i = 0; i < spydata->spy_number; i++)
if(!compare_ether_addr(address, spydata->spy_address[i])) { if (!compare_ether_addr(address, spydata->spy_address[i])) {
memcpy(&(spydata->spy_stat[i]), wstats, memcpy(&(spydata->spy_stat[i]), wstats,
sizeof(struct iw_quality)); sizeof(struct iw_quality));
match = i; match = i;
...@@ -2346,15 +2345,15 @@ void wireless_spy_update(struct net_device * dev, ...@@ -2346,15 +2345,15 @@ void wireless_spy_update(struct net_device * dev,
* To avoid event storms, we have a simple hysteresis : we generate * To avoid event storms, we have a simple hysteresis : we generate
* event only when we go under the low threshold or above the * event only when we go under the low threshold or above the
* high threshold. */ * high threshold. */
if(match >= 0) { if (match >= 0) {
if(spydata->spy_thr_under[match]) { if (spydata->spy_thr_under[match]) {
if(wstats->level > spydata->spy_thr_high.level) { if (wstats->level > spydata->spy_thr_high.level) {
spydata->spy_thr_under[match] = 0; spydata->spy_thr_under[match] = 0;
iw_send_thrspy_event(dev, spydata, iw_send_thrspy_event(dev, spydata,
address, wstats); address, wstats);
} }
} else { } else {
if(wstats->level < spydata->spy_thr_low.level) { if (wstats->level < spydata->spy_thr_low.level) {
spydata->spy_thr_under[match] = 1; spydata->spy_thr_under[match] = 1;
iw_send_thrspy_event(dev, spydata, iw_send_thrspy_event(dev, spydata,
address, wstats); address, wstats);
......
...@@ -1292,7 +1292,7 @@ asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen) ...@@ -1292,7 +1292,7 @@ asmlinkage long sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
int err, fput_needed; int err, fput_needed;
sock = sockfd_lookup_light(fd, &err, &fput_needed); sock = sockfd_lookup_light(fd, &err, &fput_needed);
if(sock) { if (sock) {
err = move_addr_to_kernel(umyaddr, addrlen, address); err = move_addr_to_kernel(umyaddr, addrlen, address);
if (err >= 0) { if (err >= 0) {
err = security_socket_bind(sock, err = security_socket_bind(sock,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册