Message ID | 20240529-drop-counted-by-radeon-states-state-array-v1-1-5cdc1fb29be7@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/radeon: Remove __counted_by from StateArray.states[] | expand |
Applied. Thanks! On Wed, May 29, 2024 at 5:54 PM Nathan Chancellor <nathan@kernel.org> wrote: > > From: Bill Wendling <morbo@google.com> > > Work for __counted_by on generic pointers in structures (not just > flexible array members) has started landing in Clang 19 (current tip of > tree). During the development of this feature, a restriction was added > to __counted_by to prevent the flexible array member's element type from > including a flexible array member itself such as: > > struct foo { > int count; > char buf[]; > }; > > struct bar { > int count; > struct foo data[] __counted_by(count); > }; > > because the size of data cannot be calculated with the standard array > size formula: > > sizeof(struct foo) * count > > This restriction was downgraded to a warning but due to CONFIG_WERROR, > it can still break the build. The application of __counted_by on the > states member of 'struct _StateArray' triggers this restriction, > resulting in: > > drivers/gpu/drm/radeon/pptable.h:442:5: error: 'counted_by' should not be applied to an array with element of unknown size because 'ATOM_PPLIB_STATE_V2' (aka 'struct _ATOM_PPLIB_STATE_V2') is a struct type with a flexible array member. This will be an error in a future compiler version [-Werror,-Wbounds-safety-counted-by-elt-type-unknown-size] > 442 | ATOM_PPLIB_STATE_V2 states[] __counted_by(ucNumEntries); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 1 error generated. > > Remove this use of __counted_by to fix the warning/error. However, > rather than remove it altogether, leave it commented, as it may be > possible to support this in future compiler releases. > > Cc: stable@vger.kernel.org > Closes: https://github.com/ClangBuiltLinux/linux/issues/2028 > Fixes: efade6fe50e7 ("drm/radeon: silence UBSAN warning (v3)") > Signed-off-by: Bill Wendling <morbo@google.com> > Co-developed-by: Nathan Chancellor <nathan@kernel.org> > Signed-off-by: Nathan Chancellor <nathan@kernel.org> > --- > drivers/gpu/drm/radeon/pptable.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/radeon/pptable.h b/drivers/gpu/drm/radeon/pptable.h > index b7f22597ee95..969a8fb0ee9e 100644 > --- a/drivers/gpu/drm/radeon/pptable.h > +++ b/drivers/gpu/drm/radeon/pptable.h > @@ -439,7 +439,7 @@ typedef struct _StateArray{ > //how many states we have > UCHAR ucNumEntries; > > - ATOM_PPLIB_STATE_V2 states[] __counted_by(ucNumEntries); > + ATOM_PPLIB_STATE_V2 states[] /* __counted_by(ucNumEntries) */; > }StateArray; > > > > --- > base-commit: e64e8f7c178e5228e0b2dbb504b9dc75953a319f > change-id: 20240529-drop-counted-by-radeon-states-state-array-01936ded4c18 > > Best regards, > -- > Nathan Chancellor <nathan@kernel.org> >
diff --git a/drivers/gpu/drm/radeon/pptable.h b/drivers/gpu/drm/radeon/pptable.h index b7f22597ee95..969a8fb0ee9e 100644 --- a/drivers/gpu/drm/radeon/pptable.h +++ b/drivers/gpu/drm/radeon/pptable.h @@ -439,7 +439,7 @@ typedef struct _StateArray{ //how many states we have UCHAR ucNumEntries; - ATOM_PPLIB_STATE_V2 states[] __counted_by(ucNumEntries); + ATOM_PPLIB_STATE_V2 states[] /* __counted_by(ucNumEntries) */; }StateArray;