提交 503a90dd 编写于 作者: B Brian King 提交者: Greg Kroah-Hartman

hvcs: Use driver groups to manage driver attributes

Rather than manually creating attributes for the hvcs driver,
let the driver core do this for us. This also fixes some hotplug
remove issues and ensures that cleanup of these attributes
is done in the right order.
Signed-off-by: NBrian King <brking@linux.vnet.ibm.com>
Link: https://lore.kernel.org/r/20230203155802.404324-3-brking@linux.vnet.ibm.comSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 760aa5e8
...@@ -466,6 +466,13 @@ static ssize_t rescan_store(struct device_driver *ddp, const char * buf, ...@@ -466,6 +466,13 @@ static ssize_t rescan_store(struct device_driver *ddp, const char * buf,
static DRIVER_ATTR_RW(rescan); static DRIVER_ATTR_RW(rescan);
static struct attribute *hvcs_attrs[] = {
&driver_attr_rescan.attr,
NULL,
};
ATTRIBUTE_GROUPS(hvcs);
static void hvcs_kick(void) static void hvcs_kick(void)
{ {
hvcs_kicked = 1; hvcs_kicked = 1;
...@@ -820,6 +827,7 @@ static struct vio_driver hvcs_vio_driver = { ...@@ -820,6 +827,7 @@ static struct vio_driver hvcs_vio_driver = {
.remove = hvcs_remove, .remove = hvcs_remove,
.name = hvcs_driver_name, .name = hvcs_driver_name,
.driver = { .driver = {
.groups = hvcs_groups,
.dev_groups = hvcs_dev_groups, .dev_groups = hvcs_dev_groups,
}, },
}; };
...@@ -1498,13 +1506,6 @@ static int __init hvcs_module_init(void) ...@@ -1498,13 +1506,6 @@ static int __init hvcs_module_init(void)
pr_info("HVCS: Driver registered.\n"); pr_info("HVCS: Driver registered.\n");
/* This needs to be done AFTER the vio_register_driver() call or else
* the kobjects won't be initialized properly.
*/
rc = driver_create_file(&(hvcs_vio_driver.driver), &driver_attr_rescan);
if (rc)
pr_warn("HVCS: Failed to create rescan file (err %d)\n", rc);
return 0; return 0;
} }
...@@ -1529,8 +1530,6 @@ static void __exit hvcs_module_exit(void) ...@@ -1529,8 +1530,6 @@ static void __exit hvcs_module_exit(void)
hvcs_pi_buff = NULL; hvcs_pi_buff = NULL;
spin_unlock(&hvcs_pi_lock); spin_unlock(&hvcs_pi_lock);
driver_remove_file(&hvcs_vio_driver.driver, &driver_attr_rescan);
tty_unregister_driver(hvcs_tty_driver); tty_unregister_driver(hvcs_tty_driver);
hvcs_free_index_list(); hvcs_free_index_list();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册