mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-15 16:53:54 +08:00
docs: deprecated.rst: Add note about DECLARE_FLEX_ARRAY() usage
There wasn't any mention of when/where DECLARE_FLEX_ARRAY() should be used, so add the rationale and an example to the deprecation docs. Suggested-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20230106200600.never.735-kees@kernel.org [jc: minor wording tweaks] Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
5a37deab42
commit
8763a30bc1
@ -346,3 +346,29 @@ struct_size() and flex_array_size() helpers::
|
||||
instance->count = count;
|
||||
|
||||
memcpy(instance->items, source, flex_array_size(instance, items, instance->count));
|
||||
|
||||
There are two special cases of replacement where the DECLARE_FLEX_ARRAY()
|
||||
helper needs to be used. (Note that it is named __DECLARE_FLEX_ARRAY() for
|
||||
use in UAPI headers.) Those cases are when the flexible array is either
|
||||
alone in a struct or is part of a union. These are disallowed by the C99
|
||||
specification, but for no technical reason (as can be seen by both the
|
||||
existing use of such arrays in those places and the work-around that
|
||||
DECLARE_FLEX_ARRAY() uses). For example, to convert this::
|
||||
|
||||
struct something {
|
||||
...
|
||||
union {
|
||||
struct type1 one[0];
|
||||
struct type2 two[0];
|
||||
};
|
||||
};
|
||||
|
||||
The helper must be used::
|
||||
|
||||
struct something {
|
||||
...
|
||||
union {
|
||||
DECLARE_FLEX_ARRAY(struct type1, one);
|
||||
DECLARE_FLEX_ARRAY(struct type2, two);
|
||||
};
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user