return -ENOMEM; 
ret = -ENOMEM; goto out; 
static int ib_umad_open(struct inode *inode, struct file *filp){	struct ib_umad_port *port;	struct ib_umad_file *file;	spin_lock(&port_lock);	port = umad_port[iminor(inode) - IB_UMAD_MINOR_BASE];	if (port)		kref_get(&port->umad_dev->ref);	spin_unlock(&port_lock);	if (!port)		return -ENXIO;	file = kzalloc(sizeof *file, GFP_KERNEL);	if (!file) {		kref_put(&port->umad_dev->ref, ib_umad_release_dev);		return -ENOMEM;	}	spin_lock_init(&file->recv_lock);	init_rwsem(&file->agent_mutex);	INIT_LIST_HEAD(&file->recv_list);	init_waitqueue_head(&file->recv_wait);	file->port = port;	filp->private_data = file;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0c99cb6d5fe77872c5a32cff837c05f70158ce15/user_mad.c/clean/drivers/infiniband/core/user_mad.c