net: socketcan: only copy data payload for non-RTR frames
Only copy the data payload for non-RTR frames as RTR frames do not carry any data. Fixes: #57002 Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
parent
b603910214
commit
912fc489b8
1 changed files with 9 additions and 2 deletions
|
@ -44,7 +44,11 @@ static inline void socketcan_to_can_frame(const struct socketcan_frame *sframe,
|
|||
zframe->flags |= (sframe->flags & CANFD_BRS) != 0 ? CAN_FRAME_BRS : 0;
|
||||
zframe->id = sframe->can_id & BIT_MASK(29);
|
||||
zframe->dlc = can_bytes_to_dlc(sframe->len);
|
||||
memcpy(zframe->data, sframe->data, MIN(sizeof(sframe->data), sizeof(zframe->data)));
|
||||
|
||||
if ((zframe->flags & CAN_FRAME_RTR) == 0U) {
|
||||
memcpy(zframe->data, sframe->data,
|
||||
MIN(sframe->len, MIN(sizeof(sframe->data), sizeof(zframe->data))));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,7 +75,10 @@ static inline void socketcan_from_can_frame(const struct can_frame *zframe,
|
|||
sframe->flags |= CANFD_BRS;
|
||||
}
|
||||
|
||||
memcpy(sframe->data, zframe->data, MIN(sizeof(zframe->data), sizeof(sframe->data)));
|
||||
if ((zframe->flags & CAN_FRAME_RTR) == 0U) {
|
||||
memcpy(sframe->data, zframe->data,
|
||||
MIN(sframe->len, MIN(sizeof(zframe->data), sizeof(sframe->data))));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue