lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a3499a19-d9ed-b8e5-341e-0aa02774b645@kernel.org>
Date:   Tue, 17 Aug 2021 18:12:49 -0700
From:   Nathan Chancellor <nathan@...nel.org>
To:     Finn Thain <fthain@...ux-m68k.org>
Cc:     Kai Mäkisara <Kai.Makisara@...umbus.fi>,
        "James E.J. Bottomley" <jejb@...ux.ibm.com>,
        "Martin K. Petersen" <martin.petersen@...cle.com>,
        "Gustavo A. R. Silva" <gustavoars@...nel.org>,
        Nick Desaulniers <ndesaulniers@...gle.com>,
        linux-scsi@...r.kernel.org, linux-kernel@...r.kernel.org,
        clang-built-linux@...glegroups.com
Subject: Re: [PATCH] scsi: st: Add missing break in switch statement in
 st_ioctl()

On 8/17/2021 5:54 PM, Finn Thain wrote:
> On Tue, 17 Aug 2021, Nathan Chancellor wrote:
> 
>> Clang + -Wimplicit-fallthrough warns:
>>
>> drivers/scsi/st.c:3831:2: warning: unannotated fall-through between
>> switch labels [-Wimplicit-fallthrough]
>>          default:
>>          ^
>> drivers/scsi/st.c:3831:2: note: insert 'break;' to avoid fall-through
>>          default:
>>          ^
>>          break;
>> 1 warning generated.
>>
>> Clang's -Wimplicit-fallthrough is a little bit more pedantic than GCC's,
>> requiring every case block to end in break, return, or fallthrough,
>> rather than allowing implicit fallthroughs to cases that just contain
>> break or return. Add a break so that there is no more warning, as has
>> been done all over the tree already.
>>
>> Fixes: 2e27f576abc6 ("scsi: scsi_ioctl: Call scsi_cmd_ioctl() from scsi_ioctl()")
>> Signed-off-by: Nathan Chancellor <nathan@...nel.org>
>> ---
>>   drivers/scsi/st.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
>> index 2d1b0594af69..0e36a36ed24d 100644
>> --- a/drivers/scsi/st.c
>> +++ b/drivers/scsi/st.c
>> @@ -3828,6 +3828,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
>>   	case CDROM_SEND_PACKET:
>>   		if (!capable(CAP_SYS_RAWIO))
>>   			return -EPERM;
>> +		break;
>>   	default:
>>   		break;
>>   	}
>>
>> base-commit: 58dd8f6e1cf8c47e81fbec9f47099772ab75278b
>>
> 
> Well, that sure is ugly.
> 
> Do you think the following change would cause any static checkers to spit
> their dummys and throw their toys out of the pram?
> 
> @@ -3828,6 +3828,7 @@ static long st_ioctl(struct file *file, unsigned int cmd_in, unsigned long arg)
>   	case CDROM_SEND_PACKET:
>   		if (!capable(CAP_SYS_RAWIO))
>   			return -EPERM;
> +		break;
> -	default:
> -		break;
>   	}
>   	

I cannot speak for other static checkers but clang does not complain in 
this instance. cmd_in is the switch value, which is unsigned int; as far 
as I am aware, clang will only complain about a switch not handling all 
values when switching on an enumerated type.

Gustavo, if you are already handling all of the other warnings in -next, 
do you want to take this one too?

Cheers,
Nathan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ