public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
@ 2013-06-13  0:03 Ira Weiny
       [not found] ` <20130612170307.8eb7f51c4b68512db703615a-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Ira Weiny @ 2013-06-13  0:03 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA; +Cc: Hal Rosenstock, Dan Ben Yosef


Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 src/ibstat.c |    9 ++-------
 1 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/ibstat.c b/src/ibstat.c
index 665bb0a..1ef27f2 100644
--- a/src/ibstat.c
+++ b/src/ibstat.c
@@ -314,7 +314,8 @@ int main(int argc, char *argv[])
 		if (i >= n)
 			IBPANIC("'%s' IB device can't be found", argv[0]);
 
-		strncpy(names[i], argv[0], sizeof names[i]);
+		strncpy(names[0], argv[0], sizeof(names[0])-1);
+		names[0][sizeof(names[0])-1] = '\0';
 		n = 1;
 	}
 
@@ -324,12 +325,6 @@ int main(int argc, char *argv[])
 		return 0;
 	}
 
-	if (!list_only && argc) {
-		if (ca_stat(argv[0], dev_port, short_format) < 0)
-			IBPANIC("stat of IB device '%s' failed", argv[0]);
-		return 0;
-	}
-
 	for (i = 0; i < n; i++) {
 		if (list_only)
 			printf("%s\n", names[i]);
-- 
1.7.1

--
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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
       [not found] ` <20130612170307.8eb7f51c4b68512db703615a-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2013-06-13  1:38   ` Hal Rosenstock
       [not found]     ` <51B922B2.3020404-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Hal Rosenstock @ 2013-06-13  1:38 UTC (permalink / raw)
  To: Ira Weiny; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, Dan Ben Yosef

On 6/12/2013 8:03 PM, Ira Weiny wrote:

This seems like 2 different patches to me.

> Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
>  src/ibstat.c |    9 ++-------
>  1 files changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/src/ibstat.c b/src/ibstat.c
> index 665bb0a..1ef27f2 100644
> --- a/src/ibstat.c
> +++ b/src/ibstat.c
> @@ -314,7 +314,8 @@ int main(int argc, char *argv[])
>  		if (i >= n)
>  			IBPANIC("'%s' IB device can't be found", argv[0]);
>  
> -		strncpy(names[i], argv[0], sizeof names[i]);
> +		strncpy(names[0], argv[0], sizeof(names[0])-1);
> +		names[0][sizeof(names[0])-1] = '\0';
>  		n = 1;
>  	}
>  
> @@ -324,12 +325,6 @@ int main(int argc, char *argv[])
>  		return 0;
>  	}
>  
> -	if (!list_only && argc) {

I think I see the issue. Rather than eliminate this if clause, I think
the line above should be:

	if (!list_only && argc > 1) {

so that this properly handles the case when the port option is supplied.

-- Hal

> -		if (ca_stat(argv[0], dev_port, short_format) < 0)
> -			IBPANIC("stat of IB device '%s' failed", argv[0]);
> -		return 0;
> -	}
> -
>  	for (i = 0; i < n; i++) {
>  		if (list_only)
>  			printf("%s\n", names[i]);

--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
       [not found]     ` <51B922B2.3020404-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
@ 2013-06-13  4:10       ` Ira Weiny
  0 siblings, 0 replies; 7+ messages in thread
From: Ira Weiny @ 2013-06-13  4:10 UTC (permalink / raw)
  To: Hal Rosenstock; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, Dan Ben Yosef

On Wed, 12 Jun 2013 21:38:58 -0400
Hal Rosenstock <hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org> wrote:

> On 6/12/2013 8:03 PM, Ira Weiny wrote:
> 
> This seems like 2 different patches to me.

Not really...

> 
> > Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> > ---
> >  src/ibstat.c |    9 ++-------
> >  1 files changed, 2 insertions(+), 7 deletions(-)
> > 
> > @@ -324,12 +325,6 @@ int main(int argc, char *argv[])
> >  		return 0;
> >  	}
> >  
> > -	if (!list_only && argc) {
> 
> I think I see the issue. Rather than eliminate this if clause, I think
> the line above should be:
> 
> 	if (!list_only && argc > 1) {
> 
> so that this properly handles the case when the port option is supplied.

V2 on the way.  I think we should still get rid of that if clause but your right I broke the "port" parameter.

Ira

> 
> -- Hal
> 
> > -		if (ca_stat(argv[0], dev_port, short_format) < 0)
> > -			IBPANIC("stat of IB device '%s' failed", argv[0]);
> > -		return 0;
> > -	}
> > -
> >  	for (i = 0; i < n; i++) {
> >  		if (list_only)
> >  			printf("%s\n", names[i]);
> 


-- 
Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
@ 2013-06-13  4:15 Ira Weiny
       [not found] ` <20130612211537.1eef2098a821426c466a83b5-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Ira Weiny @ 2013-06-13  4:15 UTC (permalink / raw)
  To: linux-rdma-u79uwXL29TY76Z2rM5mHXA; +Cc: Hal Rosenstock, Dan Ben Yosef


Changes since V1:
	Fix port parameter usage.

Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 src/ibstat.c |   11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/src/ibstat.c b/src/ibstat.c
index 665bb0a..37f2361 100644
--- a/src/ibstat.c
+++ b/src/ibstat.c
@@ -314,7 +314,8 @@ int main(int argc, char *argv[])
 		if (i >= n)
 			IBPANIC("'%s' IB device can't be found", argv[0]);
 
-		strncpy(names[i], argv[0], sizeof names[i]);
+		strncpy(names[0], argv[0], sizeof(names[0])-1);
+		names[0][sizeof(names[0])-1] = '\0';
 		n = 1;
 	}
 
@@ -324,16 +325,10 @@ int main(int argc, char *argv[])
 		return 0;
 	}
 
-	if (!list_only && argc) {
-		if (ca_stat(argv[0], dev_port, short_format) < 0)
-			IBPANIC("stat of IB device '%s' failed", argv[0]);
-		return 0;
-	}
-
 	for (i = 0; i < n; i++) {
 		if (list_only)
 			printf("%s\n", names[i]);
-		else if (ca_stat(names[i], -1, short_format) < 0)
+		else if (ca_stat(names[i], dev_port, short_format) < 0)
 			IBPANIC("stat of IB device '%s' failed", names[i]);
 	}
 
-- 
1.7.1

--
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

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
       [not found] ` <20130612211537.1eef2098a821426c466a83b5-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2013-06-13 10:58   ` Hal Rosenstock
       [not found]     ` <51B9A5CD.4010209-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Hal Rosenstock @ 2013-06-13 10:58 UTC (permalink / raw)
  To: Ira Weiny; +Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA, Dan Ben Yosef

On 6/13/2013 12:15 AM, Ira Weiny wrote:
> 
> Changes since V1:
> 	Fix port parameter usage.
> 
> Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> ---
>  src/ibstat.c |   11 +++--------
>  1 files changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/src/ibstat.c b/src/ibstat.c
> index 665bb0a..37f2361 100644
> --- a/src/ibstat.c
> +++ b/src/ibstat.c
> @@ -314,7 +314,8 @@ int main(int argc, char *argv[])
>  		if (i >= n)
>  			IBPANIC("'%s' IB device can't be found", argv[0]);
>  
> -		strncpy(names[i], argv[0], sizeof names[i]);
> +		strncpy(names[0], argv[0], sizeof(names[0])-1);
> +		names[0][sizeof(names[0])-1] = '\0';
>  		n = 1;
>  	}
>  
> @@ -324,16 +325,10 @@ int main(int argc, char *argv[])
>  		return 0;
>  	}
>  
> -	if (!list_only && argc) {
> -		if (ca_stat(argv[0], dev_port, short_format) < 0)
> -			IBPANIC("stat of IB device '%s' failed", argv[0]);
> -		return 0;
> -	}
> -
>  	for (i = 0; i < n; i++) {
>  		if (list_only)
>  			printf("%s\n", names[i]);
> -		else if (ca_stat(names[i], -1, short_format) < 0)
> +		else if (ca_stat(names[i], dev_port, short_format) < 0)

I don't think this works when ib device is not first one and port is
also supplied.

-- Hal

>  			IBPANIC("stat of IB device '%s' failed", names[i]);
>  	}
>  

--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
       [not found]     ` <51B9A5CD.4010209-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
@ 2013-06-13 18:20       ` Weiny, Ira
       [not found]         ` <2807E5FD2F6FDA4886F6618EAC48510E02084650-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Weiny, Ira @ 2013-06-13 18:20 UTC (permalink / raw)
  To: Hal Rosenstock
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Dan Ben Yosef

> -----Original Message-----
> From: Hal Rosenstock [mailto:hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org]
> Subject: Re: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l
> bug
> 
> On 6/13/2013 12:15 AM, Ira Weiny wrote:
> >
> > Changes since V1:
> > 	Fix port parameter usage.
> >
> > Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> > ---
> >  src/ibstat.c |   11 +++--------
> >  1 files changed, 3 insertions(+), 8 deletions(-)
> >
> > diff --git a/src/ibstat.c b/src/ibstat.c index 665bb0a..37f2361 100644
> > --- a/src/ibstat.c
> > +++ b/src/ibstat.c
> > @@ -314,7 +314,8 @@ int main(int argc, char *argv[])
> >  		if (i >= n)
> >  			IBPANIC("'%s' IB device can't be found", argv[0]);
> >
> > -		strncpy(names[i], argv[0], sizeof names[i]);
> > +		strncpy(names[0], argv[0], sizeof(names[0])-1);
> > +		names[0][sizeof(names[0])-1] = '\0';
> >  		n = 1;
> >  	}
> >
> > @@ -324,16 +325,10 @@ int main(int argc, char *argv[])
> >  		return 0;
> >  	}
> >
> > -	if (!list_only && argc) {
> > -		if (ca_stat(argv[0], dev_port, short_format) < 0)
> > -			IBPANIC("stat of IB device '%s' failed", argv[0]);
> > -		return 0;
> > -	}
> > -
> >  	for (i = 0; i < n; i++) {
> >  		if (list_only)
> >  			printf("%s\n", names[i]);
> > -		else if (ca_stat(names[i], -1, short_format) < 0)
> > +		else if (ca_stat(names[i], dev_port, short_format) < 0)
> 
> I don't think this works when ib device is not first one and port is also
> supplied.

That is what the change in the first hunk does.  It places argv[0] in name[0] and sets n=1.

This works fine for me:

11:17:42 > ./ibstat -l         
mlx4_0
mlx4_1

11:16:33 > ./ibstat mlx4_1 1
CA: 'mlx4_1'
Port 1:
State: Down
Physical state: Polling
Rate: 10
Base lid: 0
LMC: 0
SM lid: 0
Capability mask: 0x02510868
Port GUID: 0x0002c9030003ced7
Link layer: InfiniBand

Or are you speaking of some other use case?

Ira

> 
> -- Hal
> 
> >  			IBPANIC("stat of IB device '%s' failed", names[i]);
> >  	}
> >

--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug
       [not found]         ` <2807E5FD2F6FDA4886F6618EAC48510E02084650-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2013-06-13 18:26           ` Hal Rosenstock
  0 siblings, 0 replies; 7+ messages in thread
From: Hal Rosenstock @ 2013-06-13 18:26 UTC (permalink / raw)
  To: Weiny, Ira
  Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Dan Ben Yosef

On 6/13/2013 2:20 PM, Weiny, Ira wrote:
>> -----Original Message-----
>> From: Hal Rosenstock [mailto:hal-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org]
>> Subject: Re: [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l
>> bug
>>
>> On 6/13/2013 12:15 AM, Ira Weiny wrote:
>>>
>>> Changes since V1:
>>> 	Fix port parameter usage.
>>>
>>> Signed-off-by: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
>>> ---
>>>  src/ibstat.c |   11 +++--------
>>>  1 files changed, 3 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/src/ibstat.c b/src/ibstat.c index 665bb0a..37f2361 100644
>>> --- a/src/ibstat.c
>>> +++ b/src/ibstat.c
>>> @@ -314,7 +314,8 @@ int main(int argc, char *argv[])
>>>  		if (i >= n)
>>>  			IBPANIC("'%s' IB device can't be found", argv[0]);
>>>
>>> -		strncpy(names[i], argv[0], sizeof names[i]);
>>> +		strncpy(names[0], argv[0], sizeof(names[0])-1);
>>> +		names[0][sizeof(names[0])-1] = '\0';
>>>  		n = 1;
>>>  	}
>>>
>>> @@ -324,16 +325,10 @@ int main(int argc, char *argv[])
>>>  		return 0;
>>>  	}
>>>
>>> -	if (!list_only && argc) {
>>> -		if (ca_stat(argv[0], dev_port, short_format) < 0)
>>> -			IBPANIC("stat of IB device '%s' failed", argv[0]);
>>> -		return 0;
>>> -	}
>>> -
>>>  	for (i = 0; i < n; i++) {
>>>  		if (list_only)
>>>  			printf("%s\n", names[i]);
>>> -		else if (ca_stat(names[i], -1, short_format) < 0)
>>> +		else if (ca_stat(names[i], dev_port, short_format) < 0)
>>
>> I don't think this works when ib device is not first one and port is also
>> supplied.
> 
> That is what the change in the first hunk does.  It places argv[0] in name[0] and sets n=1.
> 
> This works fine for me:
> 
> 11:17:42 > ./ibstat -l         
> mlx4_0
> mlx4_1
> 
> 11:16:33 > ./ibstat mlx4_1 1
> CA: 'mlx4_1'
> Port 1:
> State: Down
> Physical state: Polling
> Rate: 10
> Base lid: 0
> LMC: 0
> SM lid: 0
> Capability mask: 0x02510868
> Port GUID: 0x0002c9030003ced7
> Link layer: InfiniBand
> 
> Or are you speaking of some other use case?

No; I missed looking carefully at the first hunk.

Reviewed-by: Hal Rosenstock <hal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>

-- Hal

> 
> Ira
> 
>>
>> -- Hal
>>
>>>  			IBPANIC("stat of IB device '%s' failed", names[i]);
>>>  	}
>>>
> 
> --
> 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
> 

--
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-06-13 18:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-13  4:15 [PATCH] infiniband-diags: ibstat fix strncpy coverity check and -l bug Ira Weiny
     [not found] ` <20130612211537.1eef2098a821426c466a83b5-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-06-13 10:58   ` Hal Rosenstock
     [not found]     ` <51B9A5CD.4010209-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2013-06-13 18:20       ` Weiny, Ira
     [not found]         ` <2807E5FD2F6FDA4886F6618EAC48510E02084650-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2013-06-13 18:26           ` Hal Rosenstock
  -- strict thread matches above, loose matches on Subject: below --
2013-06-13  0:03 Ira Weiny
     [not found] ` <20130612170307.8eb7f51c4b68512db703615a-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2013-06-13  1:38   ` Hal Rosenstock
     [not found]     ` <51B922B2.3020404-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2013-06-13  4:10       ` Ira Weiny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox