zfcp_erp_adisc(struct zfcp_adapter *adapter, fc_id_t d_id) 
zfcp_erp_adisc(struct zfcp_port *port) 
zfcp_erp_adisc(struct zfcp_adapter *adapter, fc_id_t d_id){	struct zfcp_send_els *send_els;	struct zfcp_ls_adisc *adisc;	void *address = NULL;	int retval = 0;	struct timer_list *timer;	send_els = kmalloc(sizeof(struct zfcp_send_els), GFP_ATOMIC);	if (send_els == NULL)		goto nomem;	memset(send_els, 0, sizeof(*send_els));	send_els->req = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC);	if (send_els->req == NULL)		goto nomem;	memset(send_els->req, 0, sizeof(*send_els->req));	send_els->resp = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC);	if (send_els->resp == NULL)		goto nomem;	memset(send_els->resp, 0, sizeof(*send_els->resp));	address = (void *) get_zeroed_page(GFP_ATOMIC);	if (address == NULL)		goto nomem;	zfcp_address_to_sg(address, send_els->req);	address += PAGE_SIZE >> 1;	zfcp_address_to_sg(address, send_els->resp);	send_els->req_count = send_els->resp_count = 1;	send_els->adapter = adapter;	send_els->d_id = d_id;	send_els->handler = zfcp_erp_adisc_handler;	send_els->handler_data = (unsigned long) send_els;	adisc = zfcp_sg_to_address(send_els->req);	send_els->ls_code = adisc->code = ZFCP_LS_ADISC;	send_els->req->length = sizeof(struct zfcp_ls_adisc);	send_els->resp->length = sizeof(struct zfcp_ls_adisc_acc);	/* acc. to FC-FS, hard_nport_id in ADISC should not be set for ports	   without FC-AL-2 capability, so we don't set it */	adisc->wwpn = adapter->wwpn;	adisc->wwnn = adapter->wwnn;	adisc->nport_id = adapter->s_id;	ZFCP_LOG_INFO("ADISC request from s_id 0x%08x to d_id 0x%08x "		      "(wwpn=0x%016Lx, wwnn=0x%016Lx, "		      "hard_nport_id=0x%08x, nport_id=0x%08x)\n",		      adapter->s_id, d_id, (wwn_t) adisc->wwpn,		      (wwn_t) adisc->wwnn, adisc->hard_nport_id,		      adisc->nport_id);	timer = kmalloc(sizeof(struct timer_list), GFP_ATOMIC);	if (!timer)		goto nomem;	init_timer(timer);	timer->function = zfcp_fsf_request_timeout_handler;	timer->data = (unsigned long) adapter;	timer->expires = ZFCP_FSF_REQUEST_TIMEOUT;	send_els->timer = timer;	retval = zfcp_fsf_send_els(send_els);	if (retval != 0) {		ZFCP_LOG_NORMAL("error: initiation of Send ELS failed for port "				"0x%08x on adapter %s\n", d_id,				zfcp_get_busid_by_adapter(adapter));		del_timer(send_els->timer);		goto freemem;	}	goto out; nomem:	retval = -ENOMEM; freemem:	if (address != NULL)		__free_pages(send_els->req->page, 0);	if (send_els != NULL) {		kfree(send_els->timer);		kfree(send_els->req);		kfree(send_els->resp);		kfree(send_els);	} out:	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/64b29a130901d5b8578e9f602cf2dae56aaff224/zfcp_erp.c/buggy/drivers/s390/scsi/zfcp_erp.c