firmware: provide helpers for registering the syfs loader

This makes init / exit much easier to read, and we can later
reuse this code on other errors not captured yet.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Luis R. Rodriguez 2017-11-20 09:45:33 -08:00 committed by Greg Kroah-Hartman
parent 59b6d859ff
commit 6bb9cf3aa3

View File

@ -687,6 +687,16 @@ static struct class firmware_class = {
.dev_release = fw_dev_release,
};
static inline int register_sysfs_loader(void)
{
return class_register(&firmware_class);
}
static inline void unregister_sysfs_loader(void)
{
class_unregister(&firmware_class);
}
static ssize_t firmware_loading_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@ -1124,6 +1134,15 @@ fw_load_from_user_helper(struct firmware *firmware, const char *name,
static inline void kill_pending_fw_fallback_reqs(bool only_kill_custom) { }
static inline int register_sysfs_loader(void)
{
return 0;
}
static inline void unregister_sysfs_loader(void)
{
}
#endif /* CONFIG_FW_LOADER_USER_HELPER */
/* prepare firmware and firmware_buf structs;
@ -1842,20 +1861,14 @@ static int __init firmware_class_init(void)
return ret;
register_reboot_notifier(&fw_shutdown_nb);
#ifdef CONFIG_FW_LOADER_USER_HELPER
return class_register(&firmware_class);
#else
return 0;
#endif
return register_sysfs_loader();
}
static void __exit firmware_class_exit(void)
{
unregister_fw_pm_ops();
unregister_reboot_notifier(&fw_shutdown_nb);
#ifdef CONFIG_FW_LOADER_USER_HELPER
class_unregister(&firmware_class);
#endif
unregister_sysfs_loader();
}
fs_initcall(firmware_class_init);