diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 9fbb6feb8c279e9dbd1c6e7b770b328556721d64..71b75f9d9c1be2a5f82793ae49303370dbc8342e 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -4480,12 +4480,9 @@ int sctp_transport_lookup_process(int (*cb)(struct sctp_transport *, void *), if (!transport || !sctp_transport_hold(transport)) goto out; - sctp_association_hold(transport->asoc); - sctp_transport_put(transport); - rcu_read_unlock(); err = cb(transport, p); - sctp_association_put(transport->asoc); + sctp_transport_put(transport); out: return err;