diff options
Diffstat (limited to 'net/sctp/input.c')
| -rw-r--r-- | net/sctp/input.c | 27 | 
1 files changed, 10 insertions, 17 deletions
| diff --git a/net/sctp/input.c b/net/sctp/input.c index 1f1786021d9c..90e12bafdd48 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c @@ -746,23 +746,21 @@ static int __sctp_hash_endpoint(struct sctp_endpoint *ep)  	struct sock *sk = ep->base.sk;  	struct net *net = sock_net(sk);  	struct sctp_hashbucket *head; -	struct sctp_ep_common *epb; -	epb = &ep->base; -	epb->hashent = sctp_ep_hashfn(net, epb->bind_addr.port); -	head = &sctp_ep_hashtable[epb->hashent]; +	ep->hashent = sctp_ep_hashfn(net, ep->base.bind_addr.port); +	head = &sctp_ep_hashtable[ep->hashent];  	if (sk->sk_reuseport) {  		bool any = sctp_is_ep_boundall(sk); -		struct sctp_ep_common *epb2; +		struct sctp_endpoint *ep2;  		struct list_head *list;  		int cnt = 0, err = 1;  		list_for_each(list, &ep->base.bind_addr.address_list)  			cnt++; -		sctp_for_each_hentry(epb2, &head->chain) { -			struct sock *sk2 = epb2->sk; +		sctp_for_each_hentry(ep2, &head->chain) { +			struct sock *sk2 = ep2->base.sk;  			if (!net_eq(sock_net(sk2), net) || sk2 == sk ||  			    !uid_eq(sock_i_uid(sk2), sock_i_uid(sk)) || @@ -789,7 +787,7 @@ static int __sctp_hash_endpoint(struct sctp_endpoint *ep)  	}  	write_lock(&head->lock); -	hlist_add_head(&epb->node, &head->chain); +	hlist_add_head(&ep->node, &head->chain);  	write_unlock(&head->lock);  	return 0;  } @@ -811,19 +809,16 @@ static void __sctp_unhash_endpoint(struct sctp_endpoint *ep)  {  	struct sock *sk = ep->base.sk;  	struct sctp_hashbucket *head; -	struct sctp_ep_common *epb; -	epb = &ep->base; +	ep->hashent = sctp_ep_hashfn(sock_net(sk), ep->base.bind_addr.port); -	epb->hashent = sctp_ep_hashfn(sock_net(sk), epb->bind_addr.port); - -	head = &sctp_ep_hashtable[epb->hashent]; +	head = &sctp_ep_hashtable[ep->hashent];  	if (rcu_access_pointer(sk->sk_reuseport_cb))  		reuseport_detach_sock(sk);  	write_lock(&head->lock); -	hlist_del_init(&epb->node); +	hlist_del_init(&ep->node);  	write_unlock(&head->lock);  } @@ -856,7 +851,6 @@ static struct sctp_endpoint *__sctp_rcv_lookup_endpoint(  					const union sctp_addr *paddr)  {  	struct sctp_hashbucket *head; -	struct sctp_ep_common *epb;  	struct sctp_endpoint *ep;  	struct sock *sk;  	__be16 lport; @@ -866,8 +860,7 @@ static struct sctp_endpoint *__sctp_rcv_lookup_endpoint(  	hash = sctp_ep_hashfn(net, ntohs(lport));  	head = &sctp_ep_hashtable[hash];  	read_lock(&head->lock); -	sctp_for_each_hentry(epb, &head->chain) { -		ep = sctp_ep(epb); +	sctp_for_each_hentry(ep, &head->chain) {  		if (sctp_endpoint_is_match(ep, net, laddr))  			goto hit;  	} |