On Sun, Mar 19, 2017 at 05:59:05PM +0200, Matan Barak wrote: > +static struct ib_uverbs_completion_event_file * > +ib_uverbs_lookup_comp_file(int fd, struct ib_ucontext *context) > +{ > + struct ib_uobject *uobj = uobj_get_read(uobj_get_type(comp_channel), > + fd, context); > + struct ib_uobject_file *uobj_file; > + > + if (IS_ERR(uobj)) > + return (void *)uobj; > + > + uobj_file = container_of(uobj, struct ib_uobject_file, uobj); > + > + uverbs_uobject_get(&uobj_file->uobj); > + uobj_put_read(uobj); That looks odd, isn't uobj == uobj_file->uobj ? > + kref_init(&ev_file->ref); > + filp = anon_inode_getfile("[infinibandevent]", &uverbs_async_event_fops, > ev_file, O_RDONLY); It seems weird this name occures twice: > +const struct uverbs_obj_fd_type uverbs_type_attrs_comp_channel = { > + .type = UVERBS_TYPE_ALLOC_FD(sizeof(struct ib_uverbs_completion_event_file), 0), > + .context_closed = uverbs_hot_unplug_completion_event_file, > + .fops = &uverbs_event_fops, > + .name = "[infinibandevent]", > + .flags = O_RDONLY, > +}; Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html