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

Commit 8a8f1c04 authored by Michael Buesch's avatar Michael Buesch Committed by David S. Miller
Browse files

rfkill: Register LED triggers before registering switch



Registering the switch triggers a LED event, so we must register
LED triggers before the switch.
This has a potential to fix a crash, depending on how the device
driver initializes the rfkill data structure.

Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8d8c90e3
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -388,19 +388,20 @@ int rfkill_register(struct rfkill *rfkill)
	if (!rfkill->toggle_radio)
		return -EINVAL;

	snprintf(dev->bus_id, sizeof(dev->bus_id),
		 "rfkill%ld", (long)atomic_inc_return(&rfkill_no) - 1);

	rfkill_led_trigger_register(rfkill);

	error = rfkill_add_switch(rfkill);
	if (error)
		return error;

	snprintf(dev->bus_id, sizeof(dev->bus_id),
		 "rfkill%ld", (long)atomic_inc_return(&rfkill_no) - 1);

	error = device_add(dev);
	if (error) {
		rfkill_remove_switch(rfkill);
		return error;
	}
	rfkill_led_trigger_register(rfkill);

	return 0;
}
@@ -416,9 +417,9 @@ EXPORT_SYMBOL(rfkill_register);
 */
void rfkill_unregister(struct rfkill *rfkill)
{
	rfkill_led_trigger_unregister(rfkill);
	device_del(&rfkill->dev);
	rfkill_remove_switch(rfkill);
	rfkill_led_trigger_unregister(rfkill);
	put_device(&rfkill->dev);
}
EXPORT_SYMBOL(rfkill_unregister);