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

Commit 9e1ccb4a authored by Russell King's avatar Russell King Committed by Greg Kroah-Hartman
Browse files

drivers/base: fix devres handling for master device



We weren't handling the devres issues for the master device failing a
bind, or being unbound properly.  Add a devres group to contain these,
and release the resources at the appropriate points.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent da9846ae
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -133,9 +133,16 @@ static int try_to_bring_up_master(struct master *master,
			goto out;
		}

		if (!devres_open_group(master->dev, NULL, GFP_KERNEL)) {
			ret = -ENOMEM;
			goto out;
		}

		/* Found all components */
		ret = master->ops->bind(master->dev);
		if (ret < 0) {
			devres_release_group(master->dev, NULL);
			dev_info(master->dev, "master bind failed: %d\n", ret);
			master_remove_components(master);
			goto out;
		}
@@ -166,6 +173,7 @@ static void take_down_master(struct master *master)
{
	if (master->bound) {
		master->ops->unbind(master->dev);
		devres_release_group(master->dev, NULL);
		master->bound = false;
	}