Skip to content

Commit 1ee6035

Browse files
committed
gcc-plugins: randstruct: Only warn about true flexible arrays
The randstruct GCC plugin tried to discover "fake" flexible arrays to issue warnings about them in randomized structs. In the future LSM overhead reduction series, it would be legal to have a randomized struct with a 1-element array, and this should _not_ be treated as a flexible array, especially since commit df8fc4e ("kbuild: Enable -fstrict-flex-arrays=3"). Disable the 0-sized and 1-element array discovery logic in the plugin, but keep the "true" flexible array check. Cc: KP Singh <kpsingh@kernel.org> Cc: linux-hardening@vger.kernel.org Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202311021532.iBwuZUZ0-lkp@intel.com/ Fixes: df8fc4e ("kbuild: Enable -fstrict-flex-arrays=3") Reviewed-by: Bill Wendling <morbo@google.com> Acked-by: "Gustavo A. R. Silva" <gustavoars@kernel.org> Link: https://lore.kernel.org/r/20231104204334.work.160-kees@kernel.org Signed-off-by: Kees Cook <keescook@chromium.org>
1 parent 6512049 commit 1ee6035

1 file changed

Lines changed: 0 additions & 10 deletions

File tree

scripts/gcc-plugins/randomize_layout_plugin.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -278,29 +278,19 @@ static bool is_flexible_array(const_tree field)
278278
{
279279
const_tree fieldtype;
280280
const_tree typesize;
281-
const_tree elemtype;
282-
const_tree elemsize;
283281

284282
fieldtype = TREE_TYPE(field);
285283
typesize = TYPE_SIZE(fieldtype);
286284

287285
if (TREE_CODE(fieldtype) != ARRAY_TYPE)
288286
return false;
289287

290-
elemtype = TREE_TYPE(fieldtype);
291-
elemsize = TYPE_SIZE(elemtype);
292-
293288
/* size of type is represented in bits */
294289

295290
if (typesize == NULL_TREE && TYPE_DOMAIN(fieldtype) != NULL_TREE &&
296291
TYPE_MAX_VALUE(TYPE_DOMAIN(fieldtype)) == NULL_TREE)
297292
return true;
298293

299-
if (typesize != NULL_TREE &&
300-
(TREE_CONSTANT(typesize) && (!tree_to_uhwi(typesize) ||
301-
tree_to_uhwi(typesize) == tree_to_uhwi(elemsize))))
302-
return true;
303-
304294
return false;
305295
}
306296

0 commit comments

Comments
 (0)