uevent->resp.id    = id; 
uevent->ctx = ctx; uevent->cm_id = cm_id; uevent->resp.uid = ctx->uid; uevent->resp.id = ctx->id; 
static int ib_ucm_event_handler(struct ib_cm_id *cm_id,				struct ib_cm_event *event){	struct ib_ucm_event *uevent;	struct ib_ucm_context *ctx;	int result = 0;	int id;	ctx = cm_id->context;	if (event->event == IB_CM_REQ_RECEIVED ||	    event->event == IB_CM_SIDR_REQ_RECEIVED)		id = IB_UCM_CM_ID_INVALID;	else		id = ctx->id;	uevent = kmalloc(sizeof(*uevent), GFP_KERNEL);	if (!uevent)		goto err1;	memset(uevent, 0, sizeof(*uevent));	uevent->resp.id    = id;	uevent->resp.event = event->event;	result = ib_ucm_event_process(ctx, event, uevent);	if (result)		goto err2;	uevent->ctx   = ctx;	uevent->cm_id = (id == IB_UCM_CM_ID_INVALID) ? cm_id : NULL;	down(&ctx->file->mutex);	list_add_tail(&uevent->file_list, &ctx->file->events);	list_add_tail(&uevent->ctx_list, &ctx->events);	wake_up_interruptible(&ctx->file->poll_wait);	up(&ctx->file->mutex);	return 0;err2:	kfree(uevent);err1:	/* Destroy new cm_id's */	return (id == IB_UCM_CM_ID_INVALID);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0b2b35f68140ceeb1b78ef85680198e63ebc8649/ucm.c/clean/drivers/infiniband/core/ucm.c