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; } 
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; } 
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;	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/e4f50f003dc568f6fc3904d451c562007bd09640/sa_query.c/buggy/drivers/infiniband/core/sa_query.c