Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754767AbbDNMZX (ORCPT ); Tue, 14 Apr 2015 08:25:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59866 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753775AbbDNMZQ (ORCPT ); Tue, 14 Apr 2015 08:25:16 -0400 From: Denys Vlasenko To: "David S. Miller" Cc: Denys Vlasenko , "Eric W. Biederman" , Jan Engelhardt , Jiri Pirko , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH] netns: deinline net_generic() Date: Tue, 14 Apr 2015 14:25:11 +0200 Message-Id: <1429014311-19868-1-git-send-email-dvlasenk@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2207 Lines: 80 On x86 allyesconfig build: The function compiles to 130 bytes of machine code. It has 493 callsites. Total reduction of vmlinux size: 27906 bytes. text data bss dec hex filename 82447071 22255384 20627456 125329911 77861f7 vmlinux4 82419165 22255384 20627456 125302005 777f4f5 vmlinux5 Signed-off-by: Denys Vlasenko CC: Eric W. Biederman CC: David S. Miller CC: Jan Engelhardt CC: Jiri Pirko CC: linux-kernel@vger.kernel.org CC: netdev@vger.kernel.org --- include/net/netns/generic.h | 15 +-------------- net/core/net_namespace.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/net/netns/generic.h b/include/net/netns/generic.h index 0931618..61a33bf 100644 --- a/include/net/netns/generic.h +++ b/include/net/netns/generic.h @@ -31,18 +31,5 @@ struct net_generic { void *ptr[0]; }; -static inline void *net_generic(const struct net *net, int id) -{ - struct net_generic *ng; - void *ptr; - - rcu_read_lock(); - ng = rcu_dereference(net->gen); - BUG_ON(id == 0 || id > ng->len); - ptr = ng->ptr[id - 1]; - rcu_read_unlock(); - - BUG_ON(!ptr); - return ptr; -} +void *net_generic(const struct net *net, int id); #endif diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index cb5290b..66c9ba1 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -42,6 +42,22 @@ EXPORT_SYMBOL(init_net); static unsigned int max_gen_ptrs = INITIAL_NET_GEN_PTRS; +void *net_generic(const struct net *net, int id) +{ + struct net_generic *ng; + void *ptr; + + rcu_read_lock(); + ng = rcu_dereference(net->gen); + BUG_ON(id == 0 || id > ng->len); + ptr = ng->ptr[id - 1]; + rcu_read_unlock(); + + BUG_ON(!ptr); + return ptr; +} +EXPORT_SYMBOL(net_generic); + static struct net_generic *net_alloc_generic(void) { struct net_generic *ng; -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/