From: Marc Kleine-Budde Date: Thu, 18 Feb 2021 20:58:36 +0000 (+0100) Subject: can: isotp: isotp_setsockopt(): only allow to set low level TX flags for CAN-FD X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e4912459bd5edd493b61bc7c3a5d9b2eb17f5a89;p=linux.git can: isotp: isotp_setsockopt(): only allow to set low level TX flags for CAN-FD CAN-FD frames have struct canfd_frame::flags, while classic CAN frames don't. This patch refuses to set TX flags (struct can_isotp_ll_options::tx_flags) on non CAN-FD isotp sockets. Fixes: e057dd3fc20f ("can: add ISO 15765-2:2016 transport protocol") Link: https://lore.kernel.org/r/20210218215434.1708249-2-mkl@pengutronix.de Cc: Oliver Hartkopp Signed-off-by: Marc Kleine-Budde --- diff --git a/net/can/isotp.c b/net/can/isotp.c index 3ef7f78e553bc..e32d446c121e7 100644 --- a/net/can/isotp.c +++ b/net/can/isotp.c @@ -1228,7 +1228,8 @@ static int isotp_setsockopt(struct socket *sock, int level, int optname, if (ll.mtu != CAN_MTU && ll.mtu != CANFD_MTU) return -EINVAL; - if (ll.mtu == CAN_MTU && ll.tx_dl > CAN_MAX_DLEN) + if (ll.mtu == CAN_MTU && + (ll.tx_dl > CAN_MAX_DLEN || ll.tx_flags != 0)) return -EINVAL; memcpy(&so->ll, &ll, sizeof(ll));