On Wed, Oct 19, 2022 at 2:29 PM Alexey Kodanev <aleksei.kodanev@xxxxxxxxxxx> wrote: > > '&asoc->ulpq' passed to sctp_ulpq_init() as the first argument, > then sctp_qlpq_init() initializes it and eventually returns the > address of the struct member back. Therefore, in this case, the > return pointer cannot be NULL. > > Moreover, it seems sctp_ulpq_init() has always been used only in > sctp_association_init(), so there's really no need to return ulpq > anymore. > > Detected using the static analysis tool - Svace. > Signed-off-by: Alexey Kodanev <aleksei.kodanev@xxxxxxxxxxx> > --- > include/net/sctp/ulpqueue.h | 3 +-- > net/sctp/associola.c | 4 +--- > net/sctp/ulpqueue.c | 5 +---- > 3 files changed, 3 insertions(+), 9 deletions(-) > > diff --git a/include/net/sctp/ulpqueue.h b/include/net/sctp/ulpqueue.h > index 0eaf8650e3b2..60f6641290c3 100644 > --- a/include/net/sctp/ulpqueue.h > +++ b/include/net/sctp/ulpqueue.h > @@ -35,8 +35,7 @@ struct sctp_ulpq { > }; > > /* Prototypes. */ > -struct sctp_ulpq *sctp_ulpq_init(struct sctp_ulpq *, > - struct sctp_association *); > +void sctp_ulpq_init(struct sctp_ulpq *ulpq, struct sctp_association *asoc); > void sctp_ulpq_flush(struct sctp_ulpq *ulpq); > void sctp_ulpq_free(struct sctp_ulpq *); > > diff --git a/net/sctp/associola.c b/net/sctp/associola.c > index 3460abceba44..63ba5551c13f 100644 > --- a/net/sctp/associola.c > +++ b/net/sctp/associola.c > @@ -226,8 +226,7 @@ static struct sctp_association *sctp_association_init( > /* Create an output queue. */ > sctp_outq_init(asoc, &asoc->outqueue); > > - if (!sctp_ulpq_init(&asoc->ulpq, asoc)) > - goto fail_init; > + sctp_ulpq_init(&asoc->ulpq, asoc); > > if (sctp_stream_init(&asoc->stream, asoc->c.sinit_num_ostreams, 0, gfp)) > goto stream_free; > @@ -277,7 +276,6 @@ static struct sctp_association *sctp_association_init( > > stream_free: > sctp_stream_free(&asoc->stream); > -fail_init: > sock_put(asoc->base.sk); > sctp_endpoint_put(asoc->ep); > return NULL; > diff --git a/net/sctp/ulpqueue.c b/net/sctp/ulpqueue.c > index 0a8510a0c5e6..24960dcb6a21 100644 > --- a/net/sctp/ulpqueue.c > +++ b/net/sctp/ulpqueue.c > @@ -38,8 +38,7 @@ static void sctp_ulpq_reasm_drain(struct sctp_ulpq *ulpq); > /* 1st Level Abstractions */ > > /* Initialize a ULP queue from a block of memory. */ > -struct sctp_ulpq *sctp_ulpq_init(struct sctp_ulpq *ulpq, > - struct sctp_association *asoc) > +void sctp_ulpq_init(struct sctp_ulpq *ulpq, struct sctp_association *asoc) > { > memset(ulpq, 0, sizeof(struct sctp_ulpq)); > > @@ -48,8 +47,6 @@ struct sctp_ulpq *sctp_ulpq_init(struct sctp_ulpq *ulpq, > skb_queue_head_init(&ulpq->reasm_uo); > skb_queue_head_init(&ulpq->lobby); > ulpq->pd_mode = 0; > - > - return ulpq; > } > > > -- > 2.25.1 > Reviewed-by: Xin Long <lucien.xin@xxxxxxxxx>