From patchwork Fri Oct 5 16:43:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 979580 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netfilter-devel-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="lYX53tY9"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42RbD21mzKz9s1x for ; Sat, 6 Oct 2018 02:43:14 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728170AbeJEXmn (ORCPT ); Fri, 5 Oct 2018 19:42:43 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:42198 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727941AbeJEXmn (ORCPT ); Fri, 5 Oct 2018 19:42:43 -0400 Received: by mail-pf1-f195.google.com with SMTP id f26-v6so5182211pfn.9 for ; Fri, 05 Oct 2018 09:43:13 -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; bh=sdqoq/EUASB+mOquWjsXYs5oMo5vOuZklPYH0HXpyho=; b=lYX53tY9oCT1ZFlZDSy9oWTFjx5eO8RMXQzby0G+H71kMgmfzBZck5x839Xl6INLBR WD7Iz7SatUiB6zS0WhJkb9A/H3sWon5c88KgKQcfb4WEdxIM59gYUD+raQOP7PrY8tt+ 68zLvJb5A0AA1UmRvIp2vJ0gYnabMQgSVxftuzPegpjco6ArNP5+57UpWUCHE1Y1Bg2w o6QRYfxWVDWxsba33vLkBnQwPI3UYWchqxNWoiss/QwPYrjFKft+uhaYGRSUMUUJiHic 0heoEOB63YjWjYu1ewsiFlnGIVl3hOzf3+VHI2RJ7DFTmurglAozx1YnOtcyNnQN2S33 /zGQ== 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; bh=sdqoq/EUASB+mOquWjsXYs5oMo5vOuZklPYH0HXpyho=; b=IYbB+FLi0xPCYvcRWDzosLTHrbnMrz0fUvq988yf1+2C97QuxwnbpNbl1ehZ2owzro dO+8sIF4daLm8DRs1F7J02LJurPGzwYg8Wa23Rxq5U17myNkXCiNFPD6QEtPiDpho9D6 SOFO5Ex/cAZQI9b0s/lOyLYHX6vvhThSRNKyDaKKZaVXOIcvrvsdbrwP3EVhmmXgDB64 7JO76qqPrtPie6KG2/xnLbs4eyd+VhoqmT9iJC8AGoAFEw4kyAA2J7QcPg/1gOUVlsz2 JZ0GpAilRFQ5b/p4KQWiEskDf96D60iSG7aelYKclvMZZieP1b2dxZbMr1VyHxlKcFfe 6XLQ== X-Gm-Message-State: ABuFfohUH0Jn7S/Wg3lAV6qLAgvRxVhetiJ5zwE0oEsXTv3U7AT4IdWM R9cNuMrAJMZzryCRkPjbjdE= X-Google-Smtp-Source: ACcGV62nFgkK0UD+t/ViKFn531hgENnOtz4tEwsihSNFexW1Jn1i4RBgahLHnw/SWo9/nXPCdOeWbA== X-Received: by 2002:a63:4281:: with SMTP id p123-v6mr10779120pga.91.1538757792906; Fri, 05 Oct 2018 09:43:12 -0700 (PDT) Received: from ap-To-be-filled-by-O-E-M.8.8.8.8 ([125.130.197.10]) by smtp.gmail.com with ESMTPSA id r18-v6sm6990628pgv.17.2018.10.05.09.43.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Oct 2018 09:43:12 -0700 (PDT) From: Taehee Yoo To: pablo@netfilter.org, netfilter-devel@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH nf 2/2] netfilter: ipt_CLUSTERIP: remove wrong WARN_ON_ONCE in netns exit routine Date: Sat, 6 Oct 2018 01:43:06 +0900 Message-Id: <20181005164306.9867-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org When network namespace is destroyed, both clusterip_tg_destroy() and clusterip_net_exit() are called. and clusterip_net_exit() is called before clusterip_tg_destroy(). Hence cleanup check code in clusterip_net_exit() doesn't make sense. test commands: %ip netns add vm1 %ip netns exec vm1 bash %ip link set lo up %iptables -A INPUT -p tcp -i lo -d 192.168.0.5 --dport 80 \ -j CLUSTERIP --new --hashmode sourceip \ --clustermac 01:00:5e:00:00:20 --total-nodes 2 --local-node 1 %exit %ip netns del vm1 splat looks like: [ 341.184508] WARNING: CPU: 1 PID: 87 at net/ipv4/netfilter/ipt_CLUSTERIP.c:840 clusterip_net_exit+0x319/0x380 [ipt_CLUSTERIP] [ 341.184850] Modules linked in: ipt_CLUSTERIP nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 xt_tcpudp iptable_filter bpfilter ip_tables x_tables [ 341.184850] CPU: 1 PID: 87 Comm: kworker/u4:2 Not tainted 4.19.0-rc5+ #16 [ 341.227509] Workqueue: netns cleanup_net [ 341.227509] RIP: 0010:clusterip_net_exit+0x319/0x380 [ipt_CLUSTERIP] [ 341.227509] Code: 0f 85 7f fe ff ff 48 c7 c2 80 64 2c c0 be a8 02 00 00 48 c7 c7 a0 63 2c c0 c6 05 18 6e 00 00 01 e8 bc 38 ff f5 e9 5b fe ff ff <0f> 0b e9 33 ff ff ff e8 4b 90 50 f6 e9 2d fe ff ff 48 89 df e8 de [ 341.227509] RSP: 0018:ffff88011086f408 EFLAGS: 00010202 [ 341.227509] RAX: dffffc0000000000 RBX: 1ffff1002210de85 RCX: 0000000000000000 [ 341.227509] RDX: 1ffff1002210de85 RSI: ffff880110813be8 RDI: ffffed002210de58 [ 341.227509] RBP: ffff88011086f4d0 R08: 0000000000000000 R09: 0000000000000000 [ 341.227509] R10: 0000000000000000 R11: 0000000000000000 R12: 1ffff1002210de81 [ 341.227509] R13: ffff880110625a48 R14: ffff880114cec8c8 R15: 0000000000000014 [ 341.227509] FS: 0000000000000000(0000) GS:ffff880116600000(0000) knlGS:0000000000000000 [ 341.227509] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 341.227509] CR2: 00007f11fd38e000 CR3: 000000013ca16000 CR4: 00000000001006e0 [ 341.227509] Call Trace: [ 341.227509] ? __clusterip_config_find+0x460/0x460 [ipt_CLUSTERIP] [ 341.227509] ? default_device_exit+0x1ca/0x270 [ 341.227509] ? remove_proc_entry+0x1cd/0x390 [ 341.227509] ? dev_change_net_namespace+0xd00/0xd00 [ 341.227509] ? __init_waitqueue_head+0x130/0x130 [ 341.227509] ops_exit_list.isra.10+0x94/0x140 [ 341.227509] cleanup_net+0x45b/0x900 [ ... ] Fixes: 613d0776d3fe ("netfilter: exit_net cleanup check added") Signed-off-by: Taehee Yoo --- net/ipv4/netfilter/ipt_CLUSTERIP.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c index 6ccabe6f74a6..20b452df856c 100644 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c @@ -835,7 +835,6 @@ static void clusterip_net_exit(struct net *net) cn->procdir = NULL; #endif nf_unregister_net_hook(net, &cip_arp_ops); - WARN_ON_ONCE(!list_empty(&cn->configs)); } static struct pernet_operations clusterip_net_ops = {