Re: [PATCH v1] hpet: Make cmd parameter of hpet_ioctl_common() unsigned

From: Clemens Ladisch
Date: Tue Mar 14 2017 - 04:05:02 EST


Matthias Kaehlcke wrote:
> The value passed by the two callers of the function is unsigned anyway.

Indeed; and those are just simple wrappers.

> Making the parameter unsigned fixes the following warning when building
> with clang:
>
> drivers/char/hpet.c:588:7: error: overflow converting case value to switch condition type (2149083139 to 18446744071563667459) [-Werror,-Wswitch]
> case HPET_INFO:
> ^
> include/uapi/linux/hpet.h:18:19: note: expanded from macro 'HPET_INFO'
> ^
> include/uapi/asm-generic/ioctl.h:77:28: note: expanded from macro '_IOR'
> ^
> include/uapi/asm-generic/ioctl.h:66:2: note: expanded from macro '_IOC'
> (((dir) << _IOC_DIRSHIFT) | \
>
> Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>

Acked-by: Clemens Ladisch <clemens@xxxxxxxxxx>

> ---
> drivers/char/hpet.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
> index 20b32bb8c2af..0d633b76c29e 100644
> --- a/drivers/char/hpet.c
> +++ b/drivers/char/hpet.c
> @@ -574,7 +574,7 @@ static inline unsigned long hpet_time_div(struct hpets *hpets,
> }
>
> static int
> -hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg,
> +hpet_ioctl_common(struct hpet_dev *devp, unsigned int cmd, unsigned long arg,
> struct hpet_info *info)
> {
> struct hpet_timer __iomem *timer;