mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
can: bcm: check the result of can_send() in bcm_can_tx()
[ Upstream commit 3fd7bfd28c
]
If can_send() fail, it should not update frames_abs counter
in bcm_can_tx(). Add the result check for can_send() in bcm_can_tx().
Suggested-by: Marc Kleine-Budde <mkl@pengutronix.de>
Suggested-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
Link: https://lore.kernel.org/all/9851878e74d6d37aee2f1ee76d68361a46f89458.1663206163.git.william.xuanziyang@huawei.com
Acked-by: 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:
parent
3423a50fa0
commit
4a5eab200e
@ -274,6 +274,7 @@ static void bcm_can_tx(struct bcm_op *op)
|
||||
struct sk_buff *skb;
|
||||
struct net_device *dev;
|
||||
struct canfd_frame *cf = op->frames + op->cfsiz * op->currframe;
|
||||
int err;
|
||||
|
||||
/* no target device? => exit */
|
||||
if (!op->ifindex)
|
||||
@ -298,11 +299,11 @@ static void bcm_can_tx(struct bcm_op *op)
|
||||
/* send with loopback */
|
||||
skb->dev = dev;
|
||||
can_skb_set_owner(skb, op->sk);
|
||||
can_send(skb, 1);
|
||||
err = can_send(skb, 1);
|
||||
if (!err)
|
||||
op->frames_abs++;
|
||||
|
||||
/* update statistics */
|
||||
op->currframe++;
|
||||
op->frames_abs++;
|
||||
|
||||
/* reached last frame? */
|
||||
if (op->currframe >= op->nframes)
|
||||
|
Loading…
Reference in New Issue
Block a user