if (query) { 
if (query && query->callback) { 
static void recv_handler(struct ib_mad_agent *mad_agent,			 struct ib_mad_recv_wc *mad_recv_wc){	struct ib_sa_query *query;	unsigned long flags;	spin_lock_irqsave(&idr_lock, flags);	query = idr_find(&query_idr, mad_recv_wc->wc->wr_id);	spin_unlock_irqrestore(&idr_lock, flags);	if (query) {		if (mad_recv_wc->wc->status == IB_WC_SUCCESS)			query->callback(query,					mad_recv_wc->recv_buf.mad->mad_hdr.status ?					-EINVAL : 0,					(struct ib_sa_mad *) mad_recv_wc->recv_buf.mad);		else			query->callback(query, -EIO, NULL);	}	ib_free_recv_mad(mad_recv_wc);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/e4f50f003dc568f6fc3904d451c562007bd09640/sa_query.c/buggy/drivers/infiniband/core/sa_query.c