forked from Minki/linux
can: isotp: tx-path: zero initialize outgoing CAN frames
Commitd4eb538e1f
("can: isotp: TX-path: ensure that CAN frame flags are initialized") ensured the TX flags to be properly set for outgoing CAN frames. In fact the root cause of the issue results from a missing initialization of outgoing CAN frames created by isotp. This is no problem on the CAN bus as the CAN driver only picks the correctly defined content from the struct can(fd)_frame. But when the outgoing frames are monitored (e.g. with candump) we potentially leak some bytes in the unused content of struct can(fd)_frame. Fixes:e057dd3fc2
("can: add ISO 15765-2:2016 transport protocol") Cc: Marc Kleine-Budde <mkl@pengutronix.de> Link: https://lore.kernel.org/r/20210319100619.10858-1-socketcan@hartkopp.net Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
5aa3c334a4
commit
b5f020f82a
@ -196,7 +196,7 @@ static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus)
|
||||
nskb->dev = dev;
|
||||
can_skb_set_owner(nskb, sk);
|
||||
ncf = (struct canfd_frame *)nskb->data;
|
||||
skb_put(nskb, so->ll.mtu);
|
||||
skb_put_zero(nskb, so->ll.mtu);
|
||||
|
||||
/* create & send flow control reply */
|
||||
ncf->can_id = so->txid;
|
||||
@ -779,7 +779,7 @@ isotp_tx_burst:
|
||||
can_skb_prv(skb)->skbcnt = 0;
|
||||
|
||||
cf = (struct canfd_frame *)skb->data;
|
||||
skb_put(skb, so->ll.mtu);
|
||||
skb_put_zero(skb, so->ll.mtu);
|
||||
|
||||
/* create consecutive frame */
|
||||
isotp_fill_dataframe(cf, so, ae, 0);
|
||||
@ -895,7 +895,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
|
||||
so->tx.idx = 0;
|
||||
|
||||
cf = (struct canfd_frame *)skb->data;
|
||||
skb_put(skb, so->ll.mtu);
|
||||
skb_put_zero(skb, so->ll.mtu);
|
||||
|
||||
/* check for single frame transmission depending on TX_DL */
|
||||
if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) {
|
||||
|
Loading…
Reference in New Issue
Block a user