From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753796Ab2LYI70 (ORCPT ); Tue, 25 Dec 2012 03:59:26 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:55989 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1753119Ab2LYI7W (ORCPT ); Tue, 25 Dec 2012 03:59:22 -0500 X-IronPort-AV: E=Sophos;i="4.84,352,1355068800"; d="scan'208";a="6470427" Message-ID: <50D965F9.7090007@cn.fujitsu.com> Date: Tue, 25 Dec 2012 16:38:17 +0800 From: Gao feng User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 MIME-Version: 1.0 To: canqun zhang CC: Patrick McHardy , netfilter-devel@vger.kernel.org, netfilter@vger.kernel.org, linux-kernel@vger.kernel.org, "netdev@vger.kernel.org" Subject: Re: kernel panic when running /etc/init.d/iptables restart References: <50D93B43.8060303@cn.fujitsu.com> In-Reply-To: X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2012/12/25 16:37:39, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2012/12/25 16:37:41, Serialize complete at 2012/12/25 16:37:41 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=GB2312 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2012/12/25 15:25, canqun zhang wrote: > Hi Gao feng > The stack information is as follows. The kenel will panic because the > nf_ct_destroy is NULL. > > Reproduction: > (1) starting a lxc container > (2) iptables -t nat -A POSTROUTING -s 10.48.254.18 -o eth1 -j > MASQUERADE (run it on host machine) > (3) /etc/ini.d/iptables save (run it on host machine) > (4)/etc/init.d/iptables restart (run it on host machine) > Thanks! It seems that nf_conntrack_l[3,4]proto_unregister doesn't make sure nf_conns of the proto being destroyed. If I'm right, there is another problem even your fix this panic problem. the l3,14proto will be unregistered before all of it's nf_conns being destroyed. So even nf_ct_destroy is not NULL,in destroy_conntrack we are not able to find the right l4proto,the l4proto->destroy will be incorrect.resources will not be released correctly. So I think the root problem is we do register/unregister, set/unset both on the first net (init_net), Maybe it's better to do register set on the first net, and do unregister unset on the last net.