diff options
Diffstat (limited to 'drivers/net/can/dev.c')
-rw-r--r-- | drivers/net/can/dev.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c index 3b3f88ffab53..c05e4d50d43d 100644 --- a/drivers/net/can/dev.c +++ b/drivers/net/can/dev.c | |||
@@ -480,8 +480,6 @@ EXPORT_SYMBOL_GPL(can_put_echo_skb); | |||
480 | struct sk_buff *__can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 *len_ptr) | 480 | struct sk_buff *__can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 *len_ptr) |
481 | { | 481 | { |
482 | struct can_priv *priv = netdev_priv(dev); | 482 | struct can_priv *priv = netdev_priv(dev); |
483 | struct sk_buff *skb = priv->echo_skb[idx]; | ||
484 | struct canfd_frame *cf; | ||
485 | 483 | ||
486 | if (idx >= priv->echo_skb_max) { | 484 | if (idx >= priv->echo_skb_max) { |
487 | netdev_err(dev, "%s: BUG! Trying to access can_priv::echo_skb out of bounds (%u/max %u)\n", | 485 | netdev_err(dev, "%s: BUG! Trying to access can_priv::echo_skb out of bounds (%u/max %u)\n", |
@@ -489,20 +487,21 @@ struct sk_buff *__can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 | |||
489 | return NULL; | 487 | return NULL; |
490 | } | 488 | } |
491 | 489 | ||
492 | if (!skb) { | 490 | if (priv->echo_skb[idx]) { |
493 | netdev_err(dev, "%s: BUG! Trying to echo non existing skb: can_priv::echo_skb[%u]\n", | 491 | /* Using "struct canfd_frame::len" for the frame |
494 | __func__, idx); | 492 | * length is supported on both CAN and CANFD frames. |
495 | return NULL; | 493 | */ |
496 | } | 494 | struct sk_buff *skb = priv->echo_skb[idx]; |
495 | struct canfd_frame *cf = (struct canfd_frame *)skb->data; | ||
496 | u8 len = cf->len; | ||
497 | 497 | ||
498 | /* Using "struct canfd_frame::len" for the frame | 498 | *len_ptr = len; |
499 | * length is supported on both CAN and CANFD frames. | 499 | priv->echo_skb[idx] = NULL; |
500 | */ | ||
501 | cf = (struct canfd_frame *)skb->data; | ||
502 | *len_ptr = cf->len; | ||
503 | priv->echo_skb[idx] = NULL; | ||
504 | 500 | ||
505 | return skb; | 501 | return skb; |
502 | } | ||
503 | |||
504 | return NULL; | ||
506 | } | 505 | } |
507 | 506 | ||
508 | /* | 507 | /* |