spin_unlock_irq(&file->ucontext->lock); 
up(&file->mutex); 
ssize_t ib_uverbs_dereg_mr(struct ib_uverbs_file *file,			   const char __user *buf, int in_len,			   int out_len){	struct ib_uverbs_dereg_mr cmd;	struct ib_mr             *mr;	struct ib_umem_object    *memobj;	int                       ret = -EINVAL;	if (copy_from_user(&cmd, buf, sizeof cmd))		return -EFAULT;	down(&ib_uverbs_idr_mutex);	mr = idr_find(&ib_uverbs_mr_idr, cmd.mr_handle);	if (!mr || mr->uobject->context != file->ucontext)		goto out;	memobj = container_of(mr->uobject, struct ib_umem_object, uobject);	ret = ib_dereg_mr(mr);	if (ret)		goto out;	idr_remove(&ib_uverbs_mr_idr, cmd.mr_handle);	spin_lock_irq(&file->ucontext->lock);	list_del(&memobj->uobject.list);	spin_unlock_irq(&file->ucontext->lock);	ib_umem_release(file->device->ib_dev, &memobj->umem);	kfree(memobj);out:	up(&ib_uverbs_idr_mutex);	return ret ? ret : in_len;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/63c47c286d062d93e0501d60797274c84a587e97/uverbs_cmd.c/buggy/drivers/infiniband/core/uverbs_cmd.c