Skip to content

Commit

Permalink
net: sctp: sctp_association_init: put refs in reverse order
Browse files Browse the repository at this point in the history
In case we need to bail out for whatever reason during assoc
init, we call sctp_endpoint_put() and then sock_put(), however,
we've hold both refs in reverse, non-symmetric order, so first
sctp_endpoint_hold() and then sock_hold().

Reverse this, so that in an error case we have sock_put() and then
sctp_endpoint_put(). Actually shouldn't matter too much, since both
cleanup paths do the right thing, but that way, it is more consistent
with the rest of the code.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Daniel Borkmann authored and David S. Miller committed Jun 14, 2013
1 parent c164b83 commit 2e0c9e7
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions net/sctp/associola.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,9 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a

/* Discarding const is appropriate here. */
asoc->ep = (struct sctp_endpoint *)ep;
sctp_endpoint_hold(asoc->ep);

/* Hold the sock. */
asoc->base.sk = (struct sock *)sk;

sctp_endpoint_hold(asoc->ep);
sock_hold(asoc->base.sk);

/* Initialize the common base substructure. */
Expand Down Expand Up @@ -343,8 +342,8 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
return asoc;

fail_init:
sctp_endpoint_put(asoc->ep);
sock_put(asoc->base.sk);
sctp_endpoint_put(asoc->ep);
return NULL;
}

Expand Down

0 comments on commit 2e0c9e7

Please sign in to comment.