Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cdaa1714 authored by Dan Carpenter's avatar Dan Carpenter Committed by Greg Kroah-Hartman
Browse files

pinctrl: core: delete incorrect free in pinctrl_enable()



[ Upstream commit 5038a66dad0199de60e5671603ea6623eb9e5c79 ]

The "pctldev" struct is allocated in devm_pinctrl_register_and_init().
It's a devm_ managed pointer that is freed by devm_pinctrl_dev_release(),
so freeing it in pinctrl_enable() will lead to a double free.

The devm_pinctrl_dev_release() function frees the pindescs and destroys
the mutex as well.

Fixes: 61187142 ("pinctrl: core: Fix pinctrl_register_and_init() with pinctrl_enable()")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Message-ID: <578fbe56-44e9-487c-ae95-29b695650f7c@moroto.mountain>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 97792d06
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -2053,13 +2053,7 @@ int pinctrl_enable(struct pinctrl_dev *pctldev)

	error = pinctrl_claim_hogs(pctldev);
	if (error) {
		dev_err(pctldev->dev, "could not claim hogs: %i\n",
			error);
		pinctrl_free_pindescs(pctldev, pctldev->desc->pins,
				      pctldev->desc->npins);
		mutex_destroy(&pctldev->mutex);
		kfree(pctldev);

		dev_err(pctldev->dev, "could not claim hogs: %i\n", error);
		return error;
	}