mcba_usb_xmit_cmd() gets free ctx by mcba_usb_get_free_ctx(). When mcba_usb_xmit() fails, the ctx should be freed with mcba_usb_free_ctx() like mcba_usb_start_xmit() does in label "xmit_failed" to avoid potential resource leak. Fix it by calling mcba_usb_free_ctx() when mcba_usb_xmit() fails. Signed-off-by: Jianglei Nie <niejianglei2021@xxxxxxx> --- drivers/net/can/usb/mcba_usb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/usb/mcba_usb.c b/drivers/net/can/usb/mcba_usb.c index 218b098b261d..471f6be6e030 100644 --- a/drivers/net/can/usb/mcba_usb.c +++ b/drivers/net/can/usb/mcba_usb.c @@ -380,9 +380,11 @@ static void mcba_usb_xmit_cmd(struct mcba_priv *priv, } err = mcba_usb_xmit(priv, usb_msg, ctx); - if (err) + if (err) { + mcba_usb_free_ctx(ctx); netdev_err(priv->netdev, "Failed to send cmd (%d)", usb_msg->cmd_id); + } } static void mcba_usb_xmit_change_bitrate(struct mcba_priv *priv, u16 bitrate) -- 2.25.1