public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Hal Rosenstock <hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
To: Alex Netes <alexne-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Cc: "linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 2/2] opensm/osm_pkey_mgr.c: Handle osm_pkey_tbl_new_block_get returning NULL
Date: Wed, 27 Apr 2011 11:15:02 -0400	[thread overview]
Message-ID: <4DB832F6.8070308@dev.mellanox.co.il> (raw)
In-Reply-To: <20110427145736.GA1903-iQai9MGU/dyyaiaB+Ve85laTQe2KTcn/@public.gmane.org>

Hi Alex,

On 4/27/2011 10:57 AM, Alex Netes wrote:
> Hi Hal,
> 
> On 15:39 Mon 11 Apr     , Hal Rosenstock wrote:
>>
>> Fixes seg fault when ib_pkey_is_invalid called in last_used_pkey_index
>>
>> Introduced by commit aebd9f9d9cdd1c60c2b3784c0c03cfe8f4014019 
>> for better last block handling
>>
>> Signed-off-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
>> ---
>> diff --git a/opensm/osm_pkey_mgr.c b/opensm/osm_pkey_mgr.c
>> index 06d9b1e..a2021e9 100644
>> --- a/opensm/osm_pkey_mgr.c
>> +++ b/opensm/osm_pkey_mgr.c
>> @@ -375,14 +375,19 @@ static int pkey_mgr_update_port(osm_log_t * p_log, osm_sm_t * sm,
>>  	return ret;
>>  }
>>  
>> -static uint16_t last_used_pkey_index(const osm_port_t * const p_port,
>> -				     const osm_pkey_tbl_t * p_pkey_tbl)
>> +static int last_used_pkey_index(const osm_port_t * const p_port,
>> +				const osm_pkey_tbl_t * p_pkey_tbl,
>> +				uint16_t * p_last_index)
>>  {
>>  	ib_pkey_table_t *last_block;
>>  	uint16_t index, last_index = 0;
>>  
>> +	CL_ASSERT(p_last_index);
>> +
>>  	last_block = osm_pkey_tbl_new_block_get(p_pkey_tbl,
>>  						p_pkey_tbl->used_blocks - 1);
>> +	if (!last_block)
>> +		return 1;
>>  
>>  	if (p_pkey_tbl->used_blocks == p_pkey_tbl->max_blocks)
>>  		last_index = cl_ntoh16(p_port->p_node->node_info.partition_cap) % IB_NUM_PKEY_ELEMENTS_IN_BLOCK;
>> @@ -395,7 +400,8 @@ static uint16_t last_used_pkey_index(const osm_port_t * const p_port,
>>  			break;
>>  	} while (index != 0);
>>  
>> -	return index;
>> +	*p_last_index = index;
> 
> I think it should be: *p_last_index = index + 1;
> You want to return the number of pkeys in the block and not the index in the
> array.

Isn't this the last_used_pkey_index as the routine name says and not one past the last index used ? 

The comparison is:

if (cl_ntoh16(p_node->sw->switch_info.enforce_cap) <= last_index)

and doesn't that take care of this ?

+			if (!last_used_pkey_index(p_port, p_peer_pkey_tbl,
+						  &last_index)) {
+				last_index += peer_block_idx * IB_NUM_PKEY_ELEMENTS_IN_BLOCK;
+				if (cl_ntoh16(p_node->sw->switch_info.enforce_cap) <= last_index) {
+					OSM_LOG(p_log, OSM_LOG_ERROR, "ERR 0507: "

-- Hal
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2011-04-27 15:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-11 19:39 [PATCH 2/2] opensm/osm_pkey_mgr.c: Handle osm_pkey_tbl_new_block_get returning NULL Hal Rosenstock
     [not found] ` <4DA358FF.3060200-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2011-04-27 14:57   ` Alex Netes
     [not found]     ` <20110427145736.GA1903-iQai9MGU/dyyaiaB+Ve85laTQe2KTcn/@public.gmane.org>
2011-04-27 15:15       ` Hal Rosenstock [this message]
     [not found]         ` <4DB832F6.8070308-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2011-04-27 15:24           ` Alex Netes
2011-05-24 16:11   ` Alex Netes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DB832F6.8070308@dev.mellanox.co.il \
    --to=hal-ldsdmyg8hgv8yrgs2mwiifqbs+8scbdb@public.gmane.org \
    --cc=alexne-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox