On Thu, Feb 07, 2019 at 09:07:20AM -0700, Nathan Chancellor wrote: > Clang warns several times in the scsi subsystem (trimmed for brevity): > > drivers/scsi/hpsa.c:6209:7: warning: overflow converting case value to > switch condition type (2147762695 to 18446744071562347015) [-Wswitch] > case CCISS_GETBUSTYPES: > ^ > drivers/scsi/hpsa.c:6208:7: warning: overflow converting case value to > switch condition type (2147762694 to 18446744071562347014) [-Wswitch] > case CCISS_GETHEARTBEAT: > ^ > > The root cause is that the _IOC macro can generate really large numbers, > which don't fit into type 'int', which is used for the cmd parameter in > the ioctls in scsi_host_template. My research into how GCC and Clang are > handling this at a low level didn't prove fruitful. However, looking at > the rest of the kernel tree, all ioctls use an 'unsigned int' for the > cmd parameter, which will fit all of the _IOC values in the scsi/ata > subsystems. > > Make that change because none of the ioctls expect a negative value for > any command, it brings the ioctls inline with the reset of the kernel, > and it removes ambiguity, which is never good when dealing with compilers. > > Link: https://github.com/ClangBuiltLinux/linux/issues/85 > Link: https://github.com/ClangBuiltLinux/linux/issues/154 > Link: https://github.com/ClangBuiltLinux/linux/issues/157 > Signed-off-by: Nathan Chancellor <natechancellor@xxxxxxxxx> > Acked-by: Bradley Grove <bgrove@xxxxxxxxxxxx> > Acked-by: Don Brace <don.brace@xxxxxxxxxxxxx> > Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx> > Tested-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> Looks good: Reviewed-by: Christoph Hellwig <hch@xxxxxx>