Lines Matching refs:ucap
126 struct ib_ucap *ucap = container_of(device, struct ib_ucap, dev); in ucap_dev_release() local
128 kfree(ucap); in ucap_dev_release()
145 struct ib_ucap *ucap; in ib_create_ucap() local
156 ucap = ucaps_list[type]; in ib_create_ucap()
157 if (ucap) { in ib_create_ucap()
158 kref_get(&ucap->ref); in ib_create_ucap()
163 ucap = kzalloc(sizeof(*ucap), GFP_KERNEL); in ib_create_ucap()
164 if (!ucap) { in ib_create_ucap()
169 device_initialize(&ucap->dev); in ib_create_ucap()
170 ucap->dev.class = &ucaps_class; in ib_create_ucap()
171 ucap->dev.devt = MKDEV(MAJOR(ucaps_base_dev), type); in ib_create_ucap()
172 ucap->dev.release = ucap_dev_release; in ib_create_ucap()
173 ret = dev_set_name(&ucap->dev, "%s", ucap_names[type]); in ib_create_ucap()
177 cdev_init(&ucap->cdev, &ucaps_cdev_fops); in ib_create_ucap()
178 ucap->cdev.owner = THIS_MODULE; in ib_create_ucap()
180 ret = cdev_device_add(&ucap->cdev, &ucap->dev); in ib_create_ucap()
184 kref_init(&ucap->ref); in ib_create_ucap()
185 ucaps_list[type] = ucap; in ib_create_ucap()
191 put_device(&ucap->dev); in ib_create_ucap()
200 struct ib_ucap *ucap = container_of(ref, struct ib_ucap, ref); in ib_release_ucap() local
204 if (ucaps_list[type] == ucap) in ib_release_ucap()
210 cdev_device_del(&ucap->cdev, &ucap->dev); in ib_release_ucap()
211 put_device(&ucap->dev); in ib_release_ucap()
223 struct ib_ucap *ucap; in ib_remove_ucap() local
226 ucap = ucaps_list[type]; in ib_remove_ucap()
227 if (WARN_ON(!ucap)) in ib_remove_ucap()
230 kref_put(&ucap->ref, ib_release_ucap); in ib_remove_ucap()