Re: [PATCH 1/2] Compiler Attributes: Add __counted_by_ptr macro
From: Arnd Bergmann
Date: Tue Feb 10 2026 - 03:42:03 EST
On Fri, Nov 21, 2025, at 20:39, Bill Wendling wrote:
>
> +/*
> + * Optional: only supported since clang >= 21
> + *
> + * clang: https://github.com/llvm/llvm-project/pull/137250
> + */
> +#ifdef CONFIG_CC_HAS_COUNTED_BY_FOR_POINTER
> +#define __counted_by_ptr(member) __attribute__((__counted_by__(member)))
> +#else
> +#define __counted_by_ptr(member)
> +#endif
Something changed in recent gcc versions. I had tested gcc-16.0.1
successfully with CONFIG_CC_HAS_COUNTED_BY_PTR=y, but after upgrading
to a recent git snapshot, I get this output:
fs/coredump.c:95:15: error: 'counted_by' attribute is not allowed for a non-array field
95 | char *corename __counted_by_ptr(size);
| ^~~~~~~~
drivers/misc/lkdtm/bugs.c:518:15: error: 'counted_by' attribute is not allowed for a non-array field
518 | char *buf __counted_by_ptr(len);
| ^~~
drivers/misc/lkdtm/bugs.c:520:29: error: 'counted_by' attribute is not allowed for a non-array field
520 | struct lkdtm_extra *extra __counted_by_ptr(nr_extra);
| ^~~~~
This is every use of __counted_by_ptr() in linux-next at the moment.
Arnd