forked from Minki/linux
net: sctp: sctp_association_init: put refs in reverse order
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>
This commit is contained in:
parent
c164b83814
commit
2e0c9e7911
@ -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. */
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user