gid_attr_group
p->gid_attr_group = kzalloc(sizeof(*p->gid_attr_group), GFP_KERNEL);
if (!p->gid_attr_group) {
p->gid_attr_group->port = p;
ret = kobject_init_and_add(&p->gid_attr_group->kobj, &gid_attr_type,
kfree(p->gid_attr_group);
p->gid_attr_group->ndev.name = "ndevs";
p->gid_attr_group->ndev.attrs = alloc_group_attrs(show_port_gid_attr_ndev,
if (!p->gid_attr_group->ndev.attrs) {
ret = sysfs_create_group(&p->gid_attr_group->kobj,
&p->gid_attr_group->ndev);
p->gid_attr_group->type.name = "types";
p->gid_attr_group->type.attrs = alloc_group_attrs(show_port_gid_attr_gid_type,
if (!p->gid_attr_group->type.attrs) {
ret = sysfs_create_group(&p->gid_attr_group->kobj,
&p->gid_attr_group->type);
sysfs_remove_group(&p->gid_attr_group->kobj,
&p->gid_attr_group->type);
kfree(p->gid_attr_group->type.attrs[i]);
kfree(p->gid_attr_group->type.attrs);
p->gid_attr_group->type.attrs = NULL;
sysfs_remove_group(&p->gid_attr_group->kobj,
&p->gid_attr_group->ndev);
kfree(p->gid_attr_group->ndev.attrs[i]);
kfree(p->gid_attr_group->ndev.attrs);
p->gid_attr_group->ndev.attrs = NULL;
kobject_put(&p->gid_attr_group->kobj);
sysfs_remove_group(&port->gid_attr_group->kobj,
&port->gid_attr_group->ndev);
sysfs_remove_group(&port->gid_attr_group->kobj,
&port->gid_attr_group->type);
kobject_put(&port->gid_attr_group->kobj);
struct ib_port *p = container_of(kobj, struct gid_attr_group,
struct gid_attr_group *gid_attr_group;
struct gid_attr_group *g = container_of(kobj, struct gid_attr_group,