From patchwork Fri Oct 9 13:11:14 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Ratiu X-Patchwork-Id: 35620 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 2A8D5B7B9B for ; Sat, 10 Oct 2009 00:18:06 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758045AbZJINMJ (ORCPT ); Fri, 9 Oct 2009 09:12:09 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753778AbZJINMJ (ORCPT ); Fri, 9 Oct 2009 09:12:09 -0400 Received: from ixro-out-rtc.ixiacom.com ([92.87.192.98]:12918 "EHLO ixro-ex1.ixiacom.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752749AbZJINMI (ORCPT ); Fri, 9 Oct 2009 09:12:08 -0400 Received: from ixro-cratiu.localnet ([10.205.9.78]) by ixro-ex1.ixiacom.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 9 Oct 2009 16:11:15 +0300 From: Cosmin Ratiu Organization: IXIA To: David Miller , opurdila@ixiacom.com Subject: Re: [Patch-next] Fix the size overflow of addrconf_sysctl array Date: Fri, 9 Oct 2009 16:11:14 +0300 User-Agent: KMail/1.12.1 (Linux/2.6.30-1-686; KDE/4.3.1; i686; ; ) Cc: jin.dongming@np.css.fujitsu.com, kaneshige.kenji@jp.fujitsu.com, seto.hidetoshi@jp.fujitsu.com, netdev@vger.kernel.org References: <4ACEA207.7010208@np.css.fujitsu.com> <20091008.224415.205034676.davem@davemloft.net> In-Reply-To: <20091008.224415.205034676.davem@davemloft.net> MIME-Version: 1.0 Message-Id: <200910091611.14701.cratiu@ixiacom.com> X-OriginalArrivalTime: 09 Oct 2009 13:11:15.0334 (UTC) FILETIME=[FB3C1260:01CA48E1] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Shouldn't this be changed too then? Or better yet, wouldn't a change that eliminates the need of adding a new option in two separate places be useful? I see the only use for that DEVCONF enum is to dump the settings via netlink. Wouldn't a memcpy suffice? Cosmin. On Friday 09 October 2009 08:44:15 David Miller wrote: > From: Jin Dongming > Date: Fri, 09 Oct 2009 11:37:59 +0900 > > Please post networking patches always CC:'d to netdev@vger.kernel.org > so that it gets added to our networking patch tracking system at: > > http://patchwork.ozlabs.org/project/netdev/list/ > > Thank you. > > I've applied your fix, thanks! > > > (This patch fixes bug of commit f7734fdf61ec6bb848e0bafc1fb8bad2c124bb50 > > title "make TLLAO option for NA packets configurable") > > > > When the IPV6 conf is used, the function sysctl_set_parent is called and > > the array addrconf_sysctl is used as a parameter of the function. > > > > The above patch added new conf "force_tllao" into the array > > addrconf_sysctl, but the size of the array was not modified, the static > > allocated size is DEVCONF_MAX + 1 but the real size is DEVCONF_MAX + 2, > > so the problem is that the function sysctl_set_parent accessed wrong > > address. > > > > I got the following information. > > Call Trace: > > [] sysctl_set_parent+0x29/0x3e > > [] sysctl_set_parent+0x29/0x3e > > [] sysctl_set_parent+0x29/0x3e > > [] sysctl_set_parent+0x29/0x3e > > [] sysctl_set_parent+0x29/0x3e > > [] __register_sysctl_paths+0xde/0x272 > > [] ? __kmalloc_track_caller+0x16e/0x180 > > [] ? __addrconf_sysctl_register+0xc5/0x144 [ipv6] > > [] register_net_sysctl_table+0x48/0x4b > > [] __addrconf_sysctl_register+0xf7/0x144 [ipv6] > > [] addrconf_init_net+0xd4/0x104 [ipv6] > > [] setup_net+0x35/0x82 > > [] copy_net_ns+0x76/0xe0 > > [] create_new_namespaces+0xf0/0x16e > > [] copy_namespaces+0x65/0x9f > > [] copy_process+0xb2c/0x12c3 > > [] do_fork+0x14b/0x2d2 > > [] ? up_read+0xe/0x10 > > [] ? do_page_fault+0x27a/0x2aa > > [] sys_clone+0x28/0x2a > > [] stub_clone+0x13/0x20 > > [] ? system_call_fastpath+0x16/0x1b > > > > And the information of IPV6 in .config is as following. > > IPV6 in .config: > > CONFIG_IPV6=m > > CONFIG_IPV6_PRIVACY=y > > CONFIG_IPV6_ROUTER_PREF=y > > CONFIG_IPV6_ROUTE_INFO=y > > CONFIG_IPV6_OPTIMISTIC_DAD=y > > CONFIG_IPV6_MIP6=m > > CONFIG_IPV6_SIT=m > > # CONFIG_IPV6_SIT_6RD is not set > > CONFIG_IPV6_NDISC_NODETYPE=y > > CONFIG_IPV6_TUNNEL=m > > CONFIG_IPV6_MULTIPLE_TABLES=y > > CONFIG_IPV6_SUBTREES=y > > CONFIG_IPV6_MROUTE=y > > CONFIG_IPV6_PIMSM_V2=y > > # CONFIG_IP_VS_IPV6 is not set > > CONFIG_NF_CONNTRACK_IPV6=m > > CONFIG_IP6_NF_MATCH_IPV6HEADER=m > > > > I confirmed this patch fixes this problem. > > > > Signed-off-by: Jin Dongming > > --- > > include/linux/ipv6.h | 1 + > > 1 files changed, 1 insertions(+), 0 deletions(-) > > > > diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h > > index ae74ede..5640425 100644 > > --- a/include/linux/ipv6.h > > +++ b/include/linux/ipv6.h > > @@ -208,6 +208,7 @@ enum { > > DEVCONF_MC_FORWARDING, > > DEVCONF_DISABLE_IPV6, > > DEVCONF_ACCEPT_DAD, > > + DEVCONF_FORCE_TLLAO, > > DEVCONF_MAX > > }; > From f72949922a102ee9e728a2805287a9bd9a4d2e67 Mon Sep 17 00:00:00 2001 From: Cosmin Ratiu Date: Fri, 9 Oct 2009 15:57:09 +0300 Subject: [PATCH] [ipv6]: fix devconf after adding force_tllao option Signed-off-by: Cosmin Ratiu --- net/ipv6/addrconf.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1fd0a3d..a065f40 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3708,6 +3708,7 @@ static inline void ipv6_store_devconf(struct ipv6_devconf *cnf, #endif array[DEVCONF_DISABLE_IPV6] = cnf->disable_ipv6; array[DEVCONF_ACCEPT_DAD] = cnf->accept_dad; + array[DEVCONF_FORCE_TLLAO] = cnf->force_tllao; } static inline size_t inet6_if_nlmsg_size(void) -- 1.6.3.3