On Wed, Nov 02, 2022 at 10:22:14AM -0700, Nathan Chancellor wrote: > The ->signal_u32_read(), ->count_u32_read(), and ->count_u32_write() > callbacks in 'struct counter_comp' expect the final parameter to have a > type of 'u32' or 'u32 *' but the ops functions that are being assigned > to those callbacks have an enumerated type as the final parameter. While > these are compatible from an ABI perspective, they will fail the > aforementioned CFI checks. > > Adjust the type of the final parameter in the ->signal_read(), > ->function_read(), and ->function_write() callbacks in 'struct > counter_ops' and their implementations to match the prototypes in > 'struct counter_comp' to clear up these warnings and CFI failures. I don't understand these changes. Where do 'struct counter_comp' and 'struct counter_ops' get confused? I can only find matching ops/assignments/calls, so I must be missing something. This looks like a loss of CFI granularity instead of having wrappers added if there is an enum/u32 conversion needed somewhere. -- Kees Cook