Commit 86ade83a authored by Dongliang Mu's avatar Dongliang Mu Committed by Lipeng Sang
Browse files

can: mcp251x: mcp251x_can_probe(): add missing unregister_candev() in error path

stable inclusion
from stable-v5.10.153
commit 0eb19ecbd0a97304e8fa400c34c9e076ac35661f
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I64YCA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0eb19ecbd0a97304e8fa400c34c9e076ac35661f



--------------------------------

[ Upstream commit b1a09b63 ]

In mcp251x_can_probe(), if mcp251x_gpio_setup() fails, it forgets to
unregister the CAN device.

Fix this by unregistering can device in mcp251x_can_probe().

Fixes: 2d52dabb ("can: mcp251x: add GPIO support")
Signed-off-by: default avatarDongliang Mu <dzm91@hust.edu.cn>
Link: https://lore.kernel.org/all/20221024090256.717236-1-dzm91@hust.edu.cn


[mkl: adjust label]
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarLipeng Sang <sanglipeng1@jd.com>
parent f3be8642
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -1419,11 +1419,14 @@ static int mcp251x_can_probe(struct spi_device *spi)


	ret = mcp251x_gpio_setup(priv);
	ret = mcp251x_gpio_setup(priv);
	if (ret)
	if (ret)
		goto error_probe;
		goto out_unregister_candev;


	netdev_info(net, "MCP%x successfully initialized.\n", priv->model);
	netdev_info(net, "MCP%x successfully initialized.\n", priv->model);
	return 0;
	return 0;


out_unregister_candev:
	unregister_candev(net);

error_probe:
error_probe:
	destroy_workqueue(priv->wq);
	destroy_workqueue(priv->wq);
	priv->wq = NULL;
	priv->wq = NULL;