summaryrefslogtreecommitdiffstats
path: root/net/iucv
diff options
context:
space:
mode:
authorUrsula Braun <ursula.braun@de.ibm.com>2014-05-28 10:22:29 +0200
committerDavid S. Miller <davem@davemloft.net>2014-05-30 17:35:23 -0700
commit4d520f62e0f4fd310a2307d0244ef184ce9200ba (patch)
treec6c420456780e2b3670978111e5b922731b694d9 /net/iucv
parent53a4b4995edc1b9eddf6cee342479f86cbae4337 (diff)
downloadlinux-stable-4d520f62e0f4fd310a2307d0244ef184ce9200ba.tar.gz
linux-stable-4d520f62e0f4fd310a2307d0244ef184ce9200ba.tar.bz2
linux-stable-4d520f62e0f4fd310a2307d0244ef184ce9200ba.zip
af_iucv: correct cleanup if listen backlog is full
In case of transport HIPER a sock struct is allocated for an incoming connect request. If the backlog queue is full this socket is not needed, but is left in the list of af_iucv sockets. Final socket release posts console message "Attempt to release alive iucv socket". This patch makes sure the new created socket is cleaned up correctly if the backlog queue is full. Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com> Signed-off-by: Frank Blaschka <blaschka@linux.vnet.ibm.com> Reported-by: Philipp Hachtmann <phacht@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/iucv')
-rw-r--r--net/iucv/af_iucv.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/net/iucv/af_iucv.c b/net/iucv/af_iucv.c
index 60f5c20d510a..7a95fa4a3de1 100644
--- a/net/iucv/af_iucv.c
+++ b/net/iucv/af_iucv.c
@@ -1943,11 +1943,10 @@ static int afiucv_hs_callback_syn(struct sock *sk, struct sk_buff *skb)
sk_acceptq_is_full(sk) ||
!nsk) {
/* error on server socket - connection refused */
- if (nsk)
- sk_free(nsk);
afiucv_swap_src_dest(skb);
trans_hdr->flags = AF_IUCV_FLAG_SYN | AF_IUCV_FLAG_FIN;
err = dev_queue_xmit(skb);
+ iucv_sock_kill(nsk);
bh_unlock_sock(sk);
goto out;
}