diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-12-03 07:55:28 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-12-03 07:55:28 +0100 |
commit | d5d12ce229c17fde99c6f8cc42f3701264a60e8c (patch) | |
tree | 9d3c4ec71ea8cab74d02b8311997630d651767eb /net/can/raw.c | |
parent | 7626e002225a4c1b9455689b1f22909dfeff43ca (diff) | |
parent | 2595646791c319cadfdbf271563aac97d0843dc7 (diff) | |
download | talos-op-linux-d5d12ce229c17fde99c6f8cc42f3701264a60e8c.tar.gz talos-op-linux-d5d12ce229c17fde99c6f8cc42f3701264a60e8c.zip |
Merge 4.20-rc5 into staging-next
We need the staging fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/can/raw.c')
-rw-r--r-- | net/can/raw.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/net/can/raw.c b/net/can/raw.c index 1051eee82581..3aab7664933f 100644 --- a/net/can/raw.c +++ b/net/can/raw.c @@ -745,18 +745,19 @@ static int raw_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) } else ifindex = ro->ifindex; - if (ro->fd_frames) { + dev = dev_get_by_index(sock_net(sk), ifindex); + if (!dev) + return -ENXIO; + + err = -EINVAL; + if (ro->fd_frames && dev->mtu == CANFD_MTU) { if (unlikely(size != CANFD_MTU && size != CAN_MTU)) - return -EINVAL; + goto put_dev; } else { if (unlikely(size != CAN_MTU)) - return -EINVAL; + goto put_dev; } - dev = dev_get_by_index(sock_net(sk), ifindex); - if (!dev) - return -ENXIO; - skb = sock_alloc_send_skb(sk, size + sizeof(struct can_skb_priv), msg->msg_flags & MSG_DONTWAIT, &err); if (!skb) |