aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/can/raw.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/net/can/raw.c b/net/can/raw.c
index 96fe0b5e3e1e..54517f9b1662 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -365,8 +365,9 @@ static int raw_release(struct socket *sock)
365 raw_disable_allfilters(dev_net(dev), dev, sk); 365 raw_disable_allfilters(dev_net(dev), dev, sk);
366 dev_put(dev); 366 dev_put(dev);
367 } 367 }
368 } else 368 } else {
369 raw_disable_allfilters(sock_net(sk), NULL, sk); 369 raw_disable_allfilters(sock_net(sk), NULL, sk);
370 }
370 } 371 }
371 372
372 if (ro->count > 1) 373 if (ro->count > 1)
@@ -446,8 +447,9 @@ static int raw_bind(struct socket *sock, struct sockaddr *uaddr, int len)
446 dev, sk); 447 dev, sk);
447 dev_put(dev); 448 dev_put(dev);
448 } 449 }
449 } else 450 } else {
450 raw_disable_allfilters(sock_net(sk), NULL, sk); 451 raw_disable_allfilters(sock_net(sk), NULL, sk);
452 }
451 } 453 }
452 ro->ifindex = ifindex; 454 ro->ifindex = ifindex;
453 ro->bound = 1; 455 ro->bound = 1;
@@ -669,8 +671,9 @@ static int raw_getsockopt(struct socket *sock, int level, int optname,
669 len = fsize; 671 len = fsize;
670 if (copy_to_user(optval, ro->filter, len)) 672 if (copy_to_user(optval, ro->filter, len))
671 err = -EFAULT; 673 err = -EFAULT;
672 } else 674 } else {
673 len = 0; 675 len = 0;
676 }
674 release_sock(sk); 677 release_sock(sk);
675 678
676 if (!err) 679 if (!err)
@@ -737,8 +740,9 @@ static int raw_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
737 return -EINVAL; 740 return -EINVAL;
738 741
739 ifindex = addr->can_ifindex; 742 ifindex = addr->can_ifindex;
740 } else 743 } else {
741 ifindex = ro->ifindex; 744 ifindex = ro->ifindex;
745 }
742 746
743 dev = dev_get_by_index(sock_net(sk), ifindex); 747 dev = dev_get_by_index(sock_net(sk), ifindex);
744 if (!dev) 748 if (!dev)