aboutsummaryrefslogtreecommitdiffstats
path: root/net/ieee802154/dgram.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ieee802154/dgram.c')
-rw-r--r--net/ieee802154/dgram.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/net/ieee802154/dgram.c b/net/ieee802154/dgram.c
index 4f0ed8780194..ef2ad8aaef13 100644
--- a/net/ieee802154/dgram.c
+++ b/net/ieee802154/dgram.c
@@ -149,8 +149,7 @@ static int dgram_ioctl(struct sock *sk, int cmd, unsigned long arg)
149 spin_lock_bh(&sk->sk_receive_queue.lock); 149 spin_lock_bh(&sk->sk_receive_queue.lock);
150 skb = skb_peek(&sk->sk_receive_queue); 150 skb = skb_peek(&sk->sk_receive_queue);
151 if (skb != NULL) { 151 if (skb != NULL) {
152 /* 152 /* We will only return the amount
153 * We will only return the amount
154 * of this packet since that is all 153 * of this packet since that is all
155 * that will be read. 154 * that will be read.
156 */ 155 */
@@ -161,12 +160,13 @@ static int dgram_ioctl(struct sock *sk, int cmd, unsigned long arg)
161 } 160 }
162 161
163 } 162 }
163
164 return -ENOIOCTLCMD; 164 return -ENOIOCTLCMD;
165} 165}
166 166
167/* FIXME: autobind */ 167/* FIXME: autobind */
168static int dgram_connect(struct sock *sk, struct sockaddr *uaddr, 168static int dgram_connect(struct sock *sk, struct sockaddr *uaddr,
169 int len) 169 int len)
170{ 170{
171 struct sockaddr_ieee802154 *addr = (struct sockaddr_ieee802154 *)uaddr; 171 struct sockaddr_ieee802154 *addr = (struct sockaddr_ieee802154 *)uaddr;
172 struct dgram_sock *ro = dgram_sk(sk); 172 struct dgram_sock *ro = dgram_sk(sk);
@@ -205,7 +205,7 @@ static int dgram_disconnect(struct sock *sk, int flags)
205} 205}
206 206
207static int dgram_sendmsg(struct kiocb *iocb, struct sock *sk, 207static int dgram_sendmsg(struct kiocb *iocb, struct sock *sk,
208 struct msghdr *msg, size_t size) 208 struct msghdr *msg, size_t size)
209{ 209{
210 struct net_device *dev; 210 struct net_device *dev;
211 unsigned int mtu; 211 unsigned int mtu;
@@ -248,8 +248,8 @@ static int dgram_sendmsg(struct kiocb *iocb, struct sock *sk,
248 hlen = LL_RESERVED_SPACE(dev); 248 hlen = LL_RESERVED_SPACE(dev);
249 tlen = dev->needed_tailroom; 249 tlen = dev->needed_tailroom;
250 skb = sock_alloc_send_skb(sk, hlen + tlen + size, 250 skb = sock_alloc_send_skb(sk, hlen + tlen + size,
251 msg->msg_flags & MSG_DONTWAIT, 251 msg->msg_flags & MSG_DONTWAIT,
252 &err); 252 &err);
253 if (!skb) 253 if (!skb)
254 goto out_dev; 254 goto out_dev;
255 255
@@ -262,7 +262,8 @@ static int dgram_sendmsg(struct kiocb *iocb, struct sock *sk,
262 cb->ackreq = ro->want_ack; 262 cb->ackreq = ro->want_ack;
263 263
264 if (msg->msg_name) { 264 if (msg->msg_name) {
265 DECLARE_SOCKADDR(struct sockaddr_ieee802154*, daddr, msg->msg_name); 265 DECLARE_SOCKADDR(struct sockaddr_ieee802154*,
266 daddr, msg->msg_name);
266 267
267 ieee802154_addr_from_sa(&dst_addr, &daddr->addr); 268 ieee802154_addr_from_sa(&dst_addr, &daddr->addr);
268 } else { 269 } else {
@@ -304,8 +305,8 @@ out:
304} 305}
305 306
306static int dgram_recvmsg(struct kiocb *iocb, struct sock *sk, 307static int dgram_recvmsg(struct kiocb *iocb, struct sock *sk,
307 struct msghdr *msg, size_t len, int noblock, int flags, 308 struct msghdr *msg, size_t len, int noblock,
308 int *addr_len) 309 int flags, int *addr_len)
309{ 310{
310 size_t copied = 0; 311 size_t copied = 0;
311 int err = -EOPNOTSUPP; 312 int err = -EOPNOTSUPP;
@@ -398,6 +399,7 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb)
398 dgram_sk(sk))) { 399 dgram_sk(sk))) {
399 if (prev) { 400 if (prev) {
400 struct sk_buff *clone; 401 struct sk_buff *clone;
402
401 clone = skb_clone(skb, GFP_ATOMIC); 403 clone = skb_clone(skb, GFP_ATOMIC);
402 if (clone) 404 if (clone)
403 dgram_rcv_skb(prev, clone); 405 dgram_rcv_skb(prev, clone);
@@ -407,9 +409,9 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb)
407 } 409 }
408 } 410 }
409 411
410 if (prev) 412 if (prev) {
411 dgram_rcv_skb(prev, skb); 413 dgram_rcv_skb(prev, skb);
412 else { 414 } else {
413 kfree_skb(skb); 415 kfree_skb(skb);
414 ret = NET_RX_DROP; 416 ret = NET_RX_DROP;
415 } 417 }
@@ -419,7 +421,7 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb)
419} 421}
420 422
421static int dgram_getsockopt(struct sock *sk, int level, int optname, 423static int dgram_getsockopt(struct sock *sk, int level, int optname,
422 char __user *optval, int __user *optlen) 424 char __user *optval, int __user *optlen)
423{ 425{
424 struct dgram_sock *ro = dgram_sk(sk); 426 struct dgram_sock *ro = dgram_sk(sk);
425 427
@@ -463,7 +465,7 @@ static int dgram_getsockopt(struct sock *sk, int level, int optname,
463} 465}
464 466
465static int dgram_setsockopt(struct sock *sk, int level, int optname, 467static int dgram_setsockopt(struct sock *sk, int level, int optname,
466 char __user *optval, unsigned int optlen) 468 char __user *optval, unsigned int optlen)
467{ 469{
468 struct dgram_sock *ro = dgram_sk(sk); 470 struct dgram_sock *ro = dgram_sk(sk);
469 struct net *net = sock_net(sk); 471 struct net *net = sock_net(sk);