diff options
Diffstat (limited to 'net/can/raw.c')
-rw-r--r-- | net/can/raw.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/can/raw.c b/net/can/raw.c index 883e9d74fddf..0eb39a7fdf64 100644 --- a/net/can/raw.c +++ b/net/can/raw.c | |||
@@ -305,7 +305,12 @@ static int raw_init(struct sock *sk) | |||
305 | static int raw_release(struct socket *sock) | 305 | static int raw_release(struct socket *sock) |
306 | { | 306 | { |
307 | struct sock *sk = sock->sk; | 307 | struct sock *sk = sock->sk; |
308 | struct raw_sock *ro = raw_sk(sk); | 308 | struct raw_sock *ro; |
309 | |||
310 | if (!sk) | ||
311 | return 0; | ||
312 | |||
313 | ro = raw_sk(sk); | ||
309 | 314 | ||
310 | unregister_netdevice_notifier(&ro->notifier); | 315 | unregister_netdevice_notifier(&ro->notifier); |
311 | 316 | ||
@@ -742,7 +747,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
742 | return size; | 747 | return size; |
743 | } | 748 | } |
744 | 749 | ||
745 | static struct proto_ops raw_ops __read_mostly = { | 750 | static const struct proto_ops raw_ops = { |
746 | .family = PF_CAN, | 751 | .family = PF_CAN, |
747 | .release = raw_release, | 752 | .release = raw_release, |
748 | .bind = raw_bind, | 753 | .bind = raw_bind, |
@@ -751,7 +756,7 @@ static struct proto_ops raw_ops __read_mostly = { | |||
751 | .accept = sock_no_accept, | 756 | .accept = sock_no_accept, |
752 | .getname = raw_getname, | 757 | .getname = raw_getname, |
753 | .poll = datagram_poll, | 758 | .poll = datagram_poll, |
754 | .ioctl = NULL, /* use can_ioctl() from af_can.c */ | 759 | .ioctl = can_ioctl, /* use can_ioctl() from af_can.c */ |
755 | .listen = sock_no_listen, | 760 | .listen = sock_no_listen, |
756 | .shutdown = sock_no_shutdown, | 761 | .shutdown = sock_no_shutdown, |
757 | .setsockopt = raw_setsockopt, | 762 | .setsockopt = raw_setsockopt, |