goto err; 
goto err_kref; 
static int ib_uverbs_open(struct inode *inode, struct file *filp){	struct ib_uverbs_device *dev =		container_of(inode->i_cdev, struct ib_uverbs_device, dev);	struct ib_uverbs_file *file;	int i = 0;	int ret;	if (!try_module_get(dev->ib_dev->owner))		return -ENODEV;	file = kmalloc(sizeof *file +		       (dev->num_comp - 1) * sizeof (struct ib_uverbs_event_file),		       GFP_KERNEL);	if (!file)		return -ENOMEM;	file->device = dev;	kref_init(&file->ref);	file->ucontext = NULL;	ret = ib_uverbs_event_init(&file->async_file, file);	if (ret)		goto err;	file->async_file.is_async = 1;	kref_get(&file->ref);	for (i = 0; i < dev->num_comp; ++i) {		ret = ib_uverbs_event_init(&file->comp_file[i], file);		if (ret)			goto err_async;		kref_get(&file->ref);		file->comp_file[i].is_async = 0;	}	filp->private_data = file;	INIT_IB_EVENT_HANDLER(&file->event_handler, dev->ib_dev,			      ib_uverbs_event_handler);	if (ib_register_event_handler(&file->event_handler))		goto err_async;	return 0;err_async:	while (i--)		ib_uverbs_event_release(&file->comp_file[i]);	ib_uverbs_event_release(&file->async_file);err:	kref_put(&file->ref, ib_uverbs_release_file);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/63c47c286d062d93e0501d60797274c84a587e97/uverbs_main.c/buggy/drivers/infiniband/core/uverbs_main.c