Re: [PATCH 2/9] thunderblot: Don't pass a bitfield to FIELD_GET

Greg KH
2025-12-08T22:56:38Z

On Mon, Dec 08, 2025 at 10:42:43PM +0000, david.laight.linux@gmail.com wrote:
> From: David Laight <david.laight.linux@gmail.com>
>
> FIELD_GET needs to use __auto_type to get the value of the 'reg'
> parameter, this can't be used with bifields.
>
> FIELD_GET also want to verify the size of 'reg' so can't add zero
> to force the type to int.
>
> So add a zero here.
>
> Signed-off-by: David Laight <david.laight.linux@gmail.com>
> ---
> drivers/thunderbolt/tb.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h
> index e96474f17067..7ca2b5a0f01e 100644
> --- a/drivers/thunderbolt/tb.h
> +++ b/drivers/thunderbolt/tb.h
> @@ -1307,7 +1307,7 @@ static inline struct tb_retimer *tb_to_retimer(struct device *dev)
> */
> static inline unsigned int usb4_switch_version(const struct tb_switch *sw)
> {
> - return FIELD_GET(USB4_VERSION_MAJOR_MASK, sw->config.thunderbolt_version);
> + return FIELD_GET(USB4_VERSION_MAJOR_MASK, sw->config.thunderbolt_version + 0);

This is going to be very confusing to people who see this line only.
Can we add a comment here to explain why we have to do a "+ 0" and why
it can't be removed? Otherwise I'm going to get a bunch of "cleanup"
patches attempting to "fix" this over the next few years.

thanks,

greg k-h