Commit 2c12932b authored by Uwe Kleine-König's avatar Uwe Kleine-König
Browse files

siox: Don't pass the reference on a master in siox_master_register()



While it's technically fine to pass the ownership of the reference on
a struct siox_master from the caller of siox_master_register() to the
framework this is hard to use. Instead let the framework take its own
reference (that is freed in siox_master_unregister()) and drop the bus
driver's reference in its remove callback.

Acked-by: default avatarThorsten Scherer <t.scherer@eckelmann.de>
Link: https://lore.kernel.org/r/1e8d09d17848e58e8fc6a46278b5e8fb0cf4618a.1708328466.git.u.kleine-koenig@pengutronix.de


Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
parent 6613476e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -149,6 +149,8 @@ static int siox_gpio_remove(struct platform_device *pdev)

	siox_master_unregister(master);

	siox_master_put(master);

	return 0;
}

+2 −0
Original line number Diff line number Diff line
@@ -717,6 +717,8 @@ int siox_master_register(struct siox_master *smaster)
	if (!smaster->pushpull)
		return -EINVAL;

	get_device(&smaster->dev);

	dev_set_name(&smaster->dev, "siox-%d", smaster->busno);

	mutex_init(&smaster->lock);