Skip to contentSkip to conversation

opensm/osm_sa_lft_record.c: In lftr_rcv_new_lftr, handle osm_switch_get_lft_block failure

PATCH In review Hal Rosenstock 2 participants 2 messages Sep 30, 2009 – Oct 4, 2009 1 message not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 opensm/osm_sa_lft_record.c: In lftr_rcv_new_lftr, handle osm_switch_get_lft_block failure

---

opensm/opensm/osm_sa_lft_record.c +6 -2
index d092129..828b277 100644
@@ -99,8 +99,12 @@ static ib_api_status_t lftr_rcv_new_lftr(IN osm_sa_t * sa,
 	p_rec_item->rec.block_num = cl_hton16(block);
 
 	/* copy the lft block */
-	osm_switch_get_lft_block(p_sw, block, p_rec_item->rec.lft);
-
+	if (!osm_switch_get_lft_block(p_sw, block, p_rec_item->rec.lft)) {
+		OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 4403: "
+			"osm_switch_get_lft_block failed\n");
+		status = IB_INSUFFICIENT_RESOURCES;
+		goto Exit;
+	}
 	cl_qlist_insert_tail(p_list, &p_rec_item->list_item);
 
 Exit:

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#2 lore raw
In reply to a message not in the archive
Quoted 9 lines · Hal Rosenstock

---

opensm/opensm/osm_sa_lft_record.c +0 -0
index d092129..828b277 100644
@@ -99,8 +99,12 @@ static ib_api_status_t lftr_rcv_new_lftr(IN osm_sa_t * sa,
 	p_rec_item->rec.block_num = cl_hton16(block);

opensm/opensm/osm_sa_lft_record.c static ib_api_status_t lftr_rcv_new_lftr(IN osm_sa_t * sa, · line 107

Quoted 10 lines
opensm/opensm/osm_sa_lft_record.c +6 -2
 
 	/* copy the lft block */
-	osm_switch_get_lft_block(p_sw, block, p_rec_item->rec.lft);
-
+	if (!osm_switch_get_lft_block(p_sw, block, p_rec_item->rec.lft)) {
+		OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 4403: "
+			"osm_switch_get_lft_block failed\n");
+		status = IB_INSUFFICIENT_RESOURCES;
+		goto Exit;
+	}

'block' value is limited here (look at lftr_rcv_by_comp_mask()) by:

	max_block = osm_switch_get_max_block_id_in_use(p_sw);
	if (comp_mask & IB_LFTR_COMPMASK_BLOCK) {
		min_block = cl_ntoh16(p_rcvd_rec->block_num);
		if (min_block > max_block)
			return;
		max_block = min_block;
	}

, so as far as I can understand osm_switch_get_lft_block() cannot fail here.

Sasha

Quoted 8 lines
opensm/opensm/osm_sa_lft_record.c +0 -1
 	cl_qlist_insert_tail(p_list, &p_rec_item->list_item);
 
 Exit:
--

To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html