return ret ? ret : query->sa_query.id; 
return ret; 
int ib_sa_mcmember_rec_query(struct ib_device *device, u8 port_num,			     u8 method,			     struct ib_sa_mcmember_rec *rec,			     ib_sa_comp_mask comp_mask,			     int timeout_ms, int gfp_mask,			     void (*callback)(int status,					      struct ib_sa_mcmember_rec *resp,					      void *context),			     void *context,			     struct ib_sa_query **sa_query){	struct ib_sa_mcmember_query *query;	struct ib_sa_device *sa_dev = ib_get_client_data(device, &sa_client);	struct ib_sa_port   *port   = &sa_dev->port[port_num - sa_dev->start_port];	struct ib_mad_agent *agent  = port->agent;	int ret;	query = kmalloc(sizeof *query, gfp_mask);	if (!query)		return -ENOMEM;	query->sa_query.mad = kmalloc(sizeof *query->sa_query.mad, gfp_mask);	if (!query->sa_query.mad) {		kfree(query);		return -ENOMEM;	}	query->callback = callback;	query->context  = context;	init_mad(query->sa_query.mad, agent);	query->sa_query.callback              = callback ? ib_sa_mcmember_rec_callback : NULL;	query->sa_query.release               = ib_sa_mcmember_rec_release;	query->sa_query.port                  = port;	query->sa_query.mad->mad_hdr.method   = method;	query->sa_query.mad->mad_hdr.attr_id  = cpu_to_be16(IB_SA_ATTR_MC_MEMBER_REC);	query->sa_query.mad->sa_hdr.comp_mask = comp_mask;	ib_pack(mcmember_rec_table, ARRAY_SIZE(mcmember_rec_table),		rec, query->sa_query.mad->data);	*sa_query = &query->sa_query;	ret = send_mad(&query->sa_query, timeout_ms);	if (ret) {		*sa_query = NULL;		kfree(query->sa_query.mad);		kfree(query);	}	return ret ? ret : query->sa_query.id;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dae4c1d2362292ccd3318ff67d18aa5c22ee820c/sa_query.c/buggy/drivers/infiniband/core/sa_query.c