Files
kernel-tenderloin-3.0/include/linux
David Rientjes 45b588d6e5 flex_array: introduce DEFINE_FLEX_ARRAY
FLEX_ARRAY_INIT(element_size, total_nr_elements) cannot determine if
either parameter is valid, so flex arrays which are statically allocated
with this interface can easily become corrupted or reference beyond its
allocated memory.

This removes FLEX_ARRAY_INIT() as a struct flex_array initializer since no
initializer may perform the required checking.  Instead, the array is now
defined with a new interface:

	DEFINE_FLEX_ARRAY(name, element_size, total_nr_elements)

This may be prefixed with `static' for file scope.

This interface includes compile-time checking of the parameters to ensure
they are valid.  Since the validity of both element_size and
total_nr_elements depend on FLEX_ARRAY_BASE_SIZE and FLEX_ARRAY_PART_SIZE,
the kernel build will fail if either of these predefined values changes
such that the array parameters are no longer valid.

Since BUILD_BUG_ON() requires compile time constants, several of the
static inline functions that were once local to lib/flex_array.c had to be
moved to include/linux/flex_array.h.

Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Dave Hansen <dave@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-09-22 07:17:47 -07:00
..
2009-09-15 09:37:12 -07:00
2009-06-18 08:46:47 +10:00
2009-06-30 18:56:00 -07:00
2009-09-09 11:19:00 -04:00
2009-09-19 13:13:33 -07:00
2009-06-17 00:36:36 -04:00
2009-09-20 16:09:20 +05:30
2009-07-29 19:10:35 -07:00
2009-07-12 12:22:34 -07:00
2009-07-14 20:29:57 +08:00
2009-09-18 09:48:52 -07:00
2009-06-22 10:12:30 +01:00
2009-09-14 17:41:42 -07:00
2009-06-17 09:33:49 -07:00
2009-07-08 09:18:05 -07:00
2009-06-24 08:17:04 -04:00
2009-06-30 18:56:00 -07:00
2009-09-22 07:17:25 -07:00
2009-06-18 13:04:05 -07:00
2009-09-01 01:13:31 -07:00
2009-09-01 17:52:57 -07:00
2009-09-11 12:54:58 -07:00
2009-08-19 23:08:24 +04:00
2009-07-26 19:25:44 -07:00
2009-06-29 08:59:10 +10:00
2009-08-21 15:30:12 -07:00
2009-07-31 08:55:48 +02:00
2009-06-18 13:03:56 -07:00
2009-08-29 15:53:00 +02:00
2009-08-17 22:38:04 -04:00
2009-09-10 10:46:47 +03:00
2009-09-19 13:13:17 -07:00
2009-09-22 07:17:33 -07:00
2009-09-18 21:22:08 +02:00
2009-06-23 20:21:39 +01:00
2009-07-30 16:03:45 +09:30
2009-09-22 07:17:35 -07:00
2009-09-22 07:17:41 -07:00
2009-07-08 09:31:56 -07:00
2009-09-18 21:22:08 +02:00
2009-06-17 18:02:11 -07:00
2009-06-17 18:02:11 -07:00
2009-08-12 08:21:39 -07:00
2009-06-17 12:24:34 -07:00
2009-06-17 18:02:11 -07:00
2009-09-22 07:17:47 -07:00
2009-06-18 13:04:04 -07:00
2009-07-29 19:10:36 -07:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-08-23 19:13:02 -07:00
2009-06-24 08:17:06 -04:00
2009-09-01 12:48:21 -04:00
2009-09-22 07:17:31 -07:00
2009-08-31 18:08:51 +02:00
2009-07-06 13:57:03 -07:00
2009-09-02 01:03:43 -07:00
2009-08-30 22:26:34 +02:00
2009-09-16 16:44:33 +02:00
2009-08-26 12:39:29 +01:00
2009-09-22 07:17:30 -07:00
2009-09-19 13:13:25 -07:00
2009-09-19 13:13:26 -07:00
2009-09-15 16:51:30 +02:00