dma_unmap_single(agent->device->dma_device, pci_unmap_addr(query, mapping), sizeof (struct ib_sa_mad), DMA_TO_DEVICE); 
spin_lock_irqsave(&idr_lock, flags); idr_remove(&query_idr, query->id); spin_unlock_irqrestore(&idr_lock, flags);  ib_free_send_mad(mad_send_wc->send_buf); 
static void send_handler(struct ib_mad_agent *agent,			 struct ib_mad_send_wc *mad_send_wc){	struct ib_sa_query *query;	unsigned long flags;	spin_lock_irqsave(&idr_lock, flags);	query = idr_find(&query_idr, mad_send_wc->wr_id);	spin_unlock_irqrestore(&idr_lock, flags);	if (!query)		return;	if (query->callback)		switch (mad_send_wc->status) {		case IB_WC_SUCCESS:			/* No callback -- already got recv */			break;		case IB_WC_RESP_TIMEOUT_ERR:			query->callback(query, -ETIMEDOUT, NULL);			break;		case IB_WC_WR_FLUSH_ERR:			query->callback(query, -EINTR, NULL);			break;		default:			query->callback(query, -EIO, NULL);			break;		}	dma_unmap_single(agent->device->dma_device,			 pci_unmap_addr(query, mapping),			 sizeof (struct ib_sa_mad),			 DMA_TO_DEVICE);	kref_put(&query->sm_ah->ref, free_sm_ah);	query->release(query);	spin_lock_irqsave(&idr_lock, flags);	idr_remove(&query_idr, mad_send_wc->wr_id);	spin_unlock_irqrestore(&idr_lock, flags);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/34816ad98efe4d47ffd858a0345321f9d85d9420/sa_query.c/clean/drivers/infiniband/core/sa_query.c