Re: [PATCH] lib/flex_array: make build optional

From: josh
Date: Thu Nov 06 2014 - 16:58:32 EST


On Thu, Nov 06, 2014 at 04:27:21PM -0500, Aristeu Rozanski wrote:
> From: Aristeu Rozanski <arozansk@xxxxxxxxxx>
>
> flex_array currently is built unconditionally:
> text data bss dec hex filename
> 2294 1008 1568 4870 1306 lib/flex_array.o
> 2294 1008 1568 4870 1306 (TOTALS)
>
> and it's used by procfs, selinux and openvswitch. This patch is
> useful for situations in which memory footprint is a concern and
> those features aren't used.
>
> Cc: Changli Gao <xiaosuo@xxxxxxxxx>
> Cc: Dave Hansen <dave@xxxxxxxxxxxxxxxxxx>
> Cc: David Rientjes <rientjes@xxxxxxxxxx>
> Cc: Eric Paris <eparis@xxxxxxxxxx>
> Cc: Hannes Frederic Sowa <hannes@xxxxxxxxxxxxxxxxxxx>
> Cc: Jesse Gross <jesse@xxxxxxxxxx>
> Cc: Jonathan Corbet <corbet@xxxxxxx>
> Cc: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx>
> Cc: Pravin Shelar <pshelar@xxxxxxxxxx>
> Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Josh Triplett <josh@xxxxxxxxxxxxxxxx>
> Signed-off-by: Aristeu Rozanski <arozansk@xxxxxxxxxx>

I already have a patch for this sitting in the tiny tree (branch
tiny/unflex-array) for the next merge window, and that patch hides the
symbol from the user, just selecting it internally.

I've updated the tinification project list to mark that and several
other projects as "done" or "in progress".

- Josh Triplett

> fs/proc/Kconfig | 1 +
> lib/Kconfig | 10 ++++++++++
> lib/Makefile | 3 ++-
> net/openvswitch/Kconfig | 1 +
> security/selinux/Kconfig | 1 +
> 5 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/fs/proc/Kconfig b/fs/proc/Kconfig
> index 2183fcf..2d624b7 100644
> --- a/fs/proc/Kconfig
> +++ b/fs/proc/Kconfig
> @@ -1,6 +1,7 @@
> config PROC_FS
> bool "/proc file system support" if EXPERT
> default y
> + select FLEX_ARRAY
> help
> This is a virtual file system providing information about the status
> of the system. "Virtual" means that it doesn't take up any space on
> diff --git a/lib/Kconfig b/lib/Kconfig
> index 54cf309..675920b 100644
> --- a/lib/Kconfig
> +++ b/lib/Kconfig
> @@ -432,6 +432,16 @@ config GLOB_SELFTEST
> module load) by a small amount, so you're welcome to play with
> it, but you probably don't need it.
>
> +config FLEX_ARRAY
> + bool "Flexible array"
> + default n
> + help
> + This option enables an implementation of flexible arrays which
> + allows creating arrays of fixed size elements with an arbritrary
> + size without requiring the single allocation of a contiguous area.
> +
> + See Documentation/flexible-arrays.txt
> +
> #
> # Netlink attribute parsing support is select'ed if needed
> #
> diff --git a/lib/Makefile b/lib/Makefile
> index 7512dc9..9c12cbc 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -24,7 +24,7 @@ obj-y += lockref.o
>
> obj-y += bcd.o div64.o sort.o parser.o halfmd4.o debug_locks.o random32.o \
> bust_spinlocks.o hexdump.o kasprintf.o bitmap.o scatterlist.o \
> - gcd.o lcm.o list_sort.o uuid.o flex_array.o iovec.o clz_ctz.o \
> + gcd.o lcm.o list_sort.o uuid.o iovec.o clz_ctz.o \
> bsearch.o find_last_bit.o find_next_bit.o llist.o memweight.o kfifo.o \
> percpu-refcount.o percpu_ida.o hash.o rhashtable.o
> obj-y += string_helpers.o
> @@ -35,6 +35,7 @@ obj-$(CONFIG_TEST_LKM) += test_module.o
> obj-$(CONFIG_TEST_USER_COPY) += test_user_copy.o
> obj-$(CONFIG_TEST_BPF) += test_bpf.o
> obj-$(CONFIG_TEST_FIRMWARE) += test_firmware.o
> +obj-$(CONFIG_FLEX_ARRAY) += flex_array.o
>
> ifeq ($(CONFIG_DEBUG_KOBJECT),y)
> CFLAGS_kobject.o += -DDEBUG
> diff --git a/net/openvswitch/Kconfig b/net/openvswitch/Kconfig
> index ba3bb82..1d979ce 100644
> --- a/net/openvswitch/Kconfig
> +++ b/net/openvswitch/Kconfig
> @@ -5,6 +5,7 @@
> config OPENVSWITCH
> tristate "Open vSwitch"
> select LIBCRC32C
> + select FLEX_ARRAY
> ---help---
> Open vSwitch is a multilayer Ethernet switch targeted at virtualized
> environments. In addition to supporting a variety of features
> diff --git a/security/selinux/Kconfig b/security/selinux/Kconfig
> index bca1b74..cfcc7c1 100644
> --- a/security/selinux/Kconfig
> +++ b/security/selinux/Kconfig
> @@ -2,6 +2,7 @@ config SECURITY_SELINUX
> bool "NSA SELinux Support"
> depends on SECURITY_NETWORK && AUDIT && NET && INET
> select NETWORK_SECMARK
> + select FLEX_ARRAY
> default n
> help
> This selects NSA Security-Enhanced Linux (SELinux).
> --
> 1.8.3.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/