Subject: Re: sctp use-uninitialized warning in net-2.6.25

From: Vlad Yasevich <[email-masked]>
Date: Fri, 18 Jan 2008 11:03:20 -0500

David Miller wrote:
> From: Andrew Morton <[email-masked]>
> Date: Wed, 16 Jan 2008 13:59:57 -0800
> 
>> net/sctp/sm_statefuns.c: In function 'sctp_sf_do_5_1C_ack':
>> net/sctp/sm_statefuns.c:484: warning: 'error' may be used uninitialized in this function
>>
>> It is not obvious that this is a false positive.
> 
> I'll check in the following for now.
> 
> Vlad, please take a look.
> 
> diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
> index b126751..6e12757 100644
> --- a/net/sctp/sm_statefuns.c
> +++ b/net/sctp/sm_statefuns.c
> @@ -481,7 +481,7 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
>  	sctp_init_chunk_t *initchunk;
>  	struct sctp_chunk *err_chunk;
>  	struct sctp_packet *packet;
> -	sctp_error_t error;
> +	sctp_error_t error = SCTP_ERROR_NO_ERROR;
>  
>  	if (!sctp_vtag_verify(chunk, asoc))
>  		return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
> 

Hi David

We can do that, or move the declaration to the only block that uses it.
Like this:

diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index f02ce3d..193c0c2 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -442,7 +442,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
 	sctp_init_chunk_t *initchunk;
 	struct sctp_chunk *err_chunk;
 	struct sctp_packet *packet;
-	sctp_error_t error;
 
 	if (!sctp_vtag_verify(chunk, asoc))
 		return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
@@ -466,6 +465,7 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
 	if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
 			      (sctp_init_chunk_t *)chunk->chunk_hdr, chunk,
 			      &err_chunk)) {
+		sctp_error_t error;
 
 		SCTP_INC_STATS(SCTP_MIB_ABORTEDS);

-vlad