mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
can: isotp: isotp_setsockopt(): only allow to set low level TX flags for CAN-FD
[ Upstream commite4912459bd] 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:e057dd3fc2("can: add ISO 15765-2:2016 transport protocol") Link: https://lore.kernel.org/r/20210218215434.1708249-2-mkl@pengutronix.de Cc: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
63f2a9bd31
commit
f88517dae9
@@ -1212,7 +1212,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));
|
||||
|
||||
Reference in New Issue
Block a user