sctp: fix error return code in sctp_send_add_streams()
authorWei Yongjun <weiyongjun1@huawei.com>
Tue, 31 Oct 2017 13:28:16 +0000 (13:28 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 Nov 2017 12:24:41 +0000 (21:24 +0900)
Fix to returnerror code -ENOMEM from the sctp_make_strreset_addstrm()
error handling case instead of 0. 'retval' can be overwritten to 0 after
call sctp_stream_alloc_out().

Fixes: e090abd0d81c ("sctp: factor out stream->out allocation")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/stream.c

index 03764fc..b8c8cab 100644 (file)
@@ -393,7 +393,7 @@ int sctp_send_add_streams(struct sctp_association *asoc,
 {
        struct sctp_stream *stream = &asoc->stream;
        struct sctp_chunk *chunk = NULL;
-       int retval = -ENOMEM;
+       int retval;
        __u32 outcnt, incnt;
        __u16 out, in;
 
@@ -425,8 +425,10 @@ int sctp_send_add_streams(struct sctp_association *asoc,
        }
 
        chunk = sctp_make_strreset_addstrm(asoc, out, in);
-       if (!chunk)
+       if (!chunk) {
+               retval = -ENOMEM;
                goto out;
+       }
 
        asoc->strreset_chunk = chunk;
        sctp_chunk_hold(asoc->strreset_chunk);