Message ID | alpine.DEB.2.20.1512211330290.19955@east.gentwo.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Mon, Dec 21, 2015 at 01:31:31PM -0600, Christoph Lameter wrote: > On Mon, 21 Dec 2015, Hal Rosenstock wrote: > > > > Don't we need to change all the sysfs_remove_groups to use get_counter_table as > > > well? > > > > Looks like it to me too. Good catch. > > Fix follows: > > From: Christoph Lameter <cl@linux.com> > Subject: Fix sysfs entry removal by storing the table format in pma_table > > Store the table being used in the ib_port structure and use it when sysfs > entries have to be removed. > > Signed-off-by: Christoph Lameter <cl@linux.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> > > Index: linux/drivers/infiniband/core/sysfs.c > =================================================================== > --- linux.orig/drivers/infiniband/core/sysfs.c > +++ linux/drivers/infiniband/core/sysfs.c > @@ -47,6 +47,7 @@ struct ib_port { > struct attribute_group gid_group; > struct attribute_group pkey_group; > u8 port_num; > + struct attribute_group *pma_table; > }; > > struct port_attribute { > @@ -651,7 +652,8 @@ static int add_port(struct ib_device *de > return ret; > } > > - ret = sysfs_create_group(&p->kobj, get_counter_table(device)); > + p->pma_table = get_counter_table(device); > + ret = sysfs_create_group(&p->kobj, p->pma_table); > if (ret) > goto err_put; > > @@ -710,7 +712,7 @@ err_free_gid: > p->gid_group.attrs = NULL; > > err_remove_pma: > - sysfs_remove_group(&p->kobj, &pma_group); > + sysfs_remove_group(&p->kobj, p->pma_table); > > err_put: > kobject_put(&p->kobj); > @@ -923,7 +925,7 @@ static void free_port_list_attributes(st > list_for_each_entry_safe(p, t, &device->port_list, entry) { > struct ib_port *port = container_of(p, struct ib_port, kobj); > list_del(&p->entry); > - sysfs_remove_group(p, &pma_group); > + sysfs_remove_group(p, port->pma_table); > sysfs_remove_group(p, &port->pkey_group); > sysfs_remove_group(p, &port->gid_group); > kobject_put(p); -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 12/21/2015 2:47 PM, ira.weiny wrote: > On Mon, Dec 21, 2015 at 01:31:31PM -0600, Christoph Lameter wrote: >> On Mon, 21 Dec 2015, Hal Rosenstock wrote: >> >>>> Don't we need to change all the sysfs_remove_groups to use get_counter_table as >>>> well? >>> >>> Looks like it to me too. Good catch. >> >> Fix follows: >> >> From: Christoph Lameter <cl@linux.com> >> Subject: Fix sysfs entry removal by storing the table format in pma_table >> >> Store the table being used in the ib_port structure and use it when sysfs >> entries have to be removed. >> >> Signed-off-by: Christoph Lameter <cl@linux.com> > > Reviewed-by: Ira Weiny <ira.weiny@intel.com> Reviewed-by: Hal Rosenstock <hal@mellanox.com> > >> >> Index: linux/drivers/infiniband/core/sysfs.c >> =================================================================== >> --- linux.orig/drivers/infiniband/core/sysfs.c >> +++ linux/drivers/infiniband/core/sysfs.c >> @@ -47,6 +47,7 @@ struct ib_port { >> struct attribute_group gid_group; >> struct attribute_group pkey_group; >> u8 port_num; >> + struct attribute_group *pma_table; >> }; >> >> struct port_attribute { >> @@ -651,7 +652,8 @@ static int add_port(struct ib_device *de >> return ret; >> } >> >> - ret = sysfs_create_group(&p->kobj, get_counter_table(device)); >> + p->pma_table = get_counter_table(device); >> + ret = sysfs_create_group(&p->kobj, p->pma_table); >> if (ret) >> goto err_put; >> >> @@ -710,7 +712,7 @@ err_free_gid: >> p->gid_group.attrs = NULL; >> >> err_remove_pma: >> - sysfs_remove_group(&p->kobj, &pma_group); >> + sysfs_remove_group(&p->kobj, p->pma_table); >> >> err_put: >> kobject_put(&p->kobj); >> @@ -923,7 +925,7 @@ static void free_port_list_attributes(st >> list_for_each_entry_safe(p, t, &device->port_list, entry) { >> struct ib_port *port = container_of(p, struct ib_port, kobj); >> list_del(&p->entry); >> - sysfs_remove_group(p, &pma_group); >> + sysfs_remove_group(p, port->pma_table); >> sysfs_remove_group(p, &port->pkey_group); >> sysfs_remove_group(p, &port->gid_group); >> kobject_put(p); > -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux/drivers/infiniband/core/sysfs.c =================================================================== --- linux.orig/drivers/infiniband/core/sysfs.c +++ linux/drivers/infiniband/core/sysfs.c @@ -47,6 +47,7 @@ struct ib_port { struct attribute_group gid_group; struct attribute_group pkey_group; u8 port_num; + struct attribute_group *pma_table; }; struct port_attribute { @@ -651,7 +652,8 @@ static int add_port(struct ib_device *de return ret; } - ret = sysfs_create_group(&p->kobj, get_counter_table(device)); + p->pma_table = get_counter_table(device); + ret = sysfs_create_group(&p->kobj, p->pma_table); if (ret) goto err_put; @@ -710,7 +712,7 @@ err_free_gid: p->gid_group.attrs = NULL; err_remove_pma: - sysfs_remove_group(&p->kobj, &pma_group); + sysfs_remove_group(&p->kobj, p->pma_table); err_put: kobject_put(&p->kobj); @@ -923,7 +925,7 @@ static void free_port_list_attributes(st list_for_each_entry_safe(p, t, &device->port_list, entry) { struct ib_port *port = container_of(p, struct ib_port, kobj); list_del(&p->entry); - sysfs_remove_group(p, &pma_group); + sysfs_remove_group(p, port->pma_table); sysfs_remove_group(p, &port->pkey_group); sysfs_remove_group(p, &port->gid_group); kobject_put(p);