From patchwork Wed Jun 21 21:36:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wei Wang X-Patchwork-Id: 779171 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wtJ2w03htz9s4q for ; Thu, 22 Jun 2017 07:37:28 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="O3Ak97Ue"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752565AbdFUVhP (ORCPT ); Wed, 21 Jun 2017 17:37:15 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:35113 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751994AbdFUVhN (ORCPT ); Wed, 21 Jun 2017 17:37:13 -0400 Received: by mail-pf0-f194.google.com with SMTP id s66so32962497pfs.2 for ; Wed, 21 Jun 2017 14:37:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=HMdjEBOWsN6+HH0zj8FAXMocHlfh7St3nML+s0Os6Bw=; b=O3Ak97UefJk4pKuIi1TkK2oef5zyWZMTqGh65hTihruk9W/59eClDU0zlGEF1B3atV vY3NfeWoPNjtLQd8IPUVwgoZGTQyHZXaQqi198OysHKYUeIm8dcQhYQCAhiS4ehlxLr5 isRl2CWkZD6ETjjEVKbYXz1XjhijnWJnlJb9gTjzxu4ZxGySeCyHRrkJvBu/FatGbHo9 9urXlgcM3novHq69Ua2BDWlk269phskTvhRW1YHSgBZ4FB/pdOrqf07svbP1J7Sf7T2R LyjCwq/Uzj1N5Ju8FUQ+KM+BwYAJqbuhiH8qkhz1e+uasfZAyjpQvtwBeZh+KnNb8sB/ HP6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=HMdjEBOWsN6+HH0zj8FAXMocHlfh7St3nML+s0Os6Bw=; b=k86aa5vwfdanK6KeTkbttdLI1unNIv/zs1o1qlSUYrz9l1JWjqZ3sjiemsNgjezUiN llLzmiH4iip3REEY8AmO1NS4Kva6goD6Z7d32kdrtnkbrSDDmTOSl+cloVN4D0RFEJyn PoIJC246qr0HE5WX+q34gSuQ4r2WVPFBQ5sCNhIl8ULouyvI+0Wd1w95Tl0qANn+6LkL YyppJ9EVx1PS8m38hClpUUG3/WTJJmcRyKuMMwIk9gbimd/1UeWwuqHioGi1TgsAdRUg gHETesxisRePS6zyCcZ0hLLCBhH1hMEjpfs15CgrUJJxoTh8NhktKxPQGK8YtUNFaQHc ndvQ== X-Gm-Message-State: AKS2vOwsnPkt9qcLyebIoAsyMOkyuG9o95YETJm3SqpfU0V4UgvJH/lm uOAofnodFr1Bw5is X-Received: by 10.98.17.12 with SMTP id z12mr38052302pfi.212.1498081022108; Wed, 21 Jun 2017 14:37:02 -0700 (PDT) Received: from weiwan0.mtv.corp.google.com ([100.123.230.66]) by smtp.gmail.com with ESMTPSA id o6sm32343551pfb.110.2017.06.21.14.37.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 21 Jun 2017 14:37:01 -0700 (PDT) From: Wei Wang To: David Miller , netdev@vger.kernel.org, Subash Abhinov Kasiviswanathan Cc: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= , Wei Wang Subject: [PATCH net] udp: ipv6: reset daddr and dport in sk if connect() fails Date: Wed, 21 Jun 2017 14:36:31 -0700 Message-Id: <20170621213631.145600-1-tracywwnj@gmail.com> X-Mailer: git-send-email 2.13.1.611.g7e3b11ae1-goog MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Wei Wang In __ip6_datagram_connect(), reset sk->sk_v6_daddr and inet->dport if error occurs so that udp_v6_early_demux() won't be able to do exact match on this socket and hence, won't consider this socket as a valid candidate for early demux. Signed-off-by: Wei Wang Acked-by: Maciej Żenczykowski --- net/ipv6/datagram.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index e011122ebd43..f43f4f1e69dd 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c @@ -250,8 +250,14 @@ int __ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, */ err = ip6_datagram_dst_update(sk, true); - if (err) + if (err) { + /* Reset daddr and dport so that udp_v6_early_demux() + * fails to find this socket + */ + memset(&sk->sk_v6_daddr, 0 sizeof(sk->sk_v6_daddr); + inet->inet_dport = 0; goto out; + } sk->sk_state = TCP_ESTABLISHED; sk_set_txhash(sk);