diff options
Diffstat (limited to 'drivers/platform/x86/ibm_rtl.c')
| -rw-r--r-- | drivers/platform/x86/ibm_rtl.c | 18 | 
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/platform/x86/ibm_rtl.c b/drivers/platform/x86/ibm_rtl.c index 5fc665f7d9b3..2ab7d9ac542d 100644 --- a/drivers/platform/x86/ibm_rtl.c +++ b/drivers/platform/x86/ibm_rtl.c @@ -199,16 +199,26 @@ static int rtl_setup_sysfs(void) {  	ret = subsys_system_register(&rtl_subsys, NULL);  	if (!ret) { -		for (i = 0; rtl_attributes[i]; i ++) -			device_create_file(rtl_subsys.dev_root, rtl_attributes[i]); +		struct device *dev_root = bus_get_dev_root(&rtl_subsys); + +		if (dev_root) { +			for (i = 0; rtl_attributes[i]; i ++) +				device_create_file(dev_root, rtl_attributes[i]); +			put_device(dev_root); +		}  	}  	return ret;  }  static void rtl_teardown_sysfs(void) { +	struct device *dev_root = bus_get_dev_root(&rtl_subsys);  	int i; -	for (i = 0; rtl_attributes[i]; i ++) -		device_remove_file(rtl_subsys.dev_root, rtl_attributes[i]); + +	if (dev_root) { +		for (i = 0; rtl_attributes[i]; i ++) +			device_remove_file(dev_root, rtl_attributes[i]); +		put_device(dev_root); +	}  	bus_unregister(&rtl_subsys);  }  |