[RESEND,v3,2/3] media: qcom: venus: Fix uninitialized variable warning

Message ID 20240725061034.461-3-nas.chung@chipsnmedia.com (mailing list archive)
State New
Delegated to: Sebastian Fricke
Headers
Series Change V4L2_TYPE_IS_CAPTURE condition |

Commit Message

Nas Chung July 25, 2024, 6:10 a.m. UTC
  Avoid uninitialized variable when both V4L2_TYPE_IS_OUTPUT() and
V4L2_TYPE_IS_CAPTURE() return false.

Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
---
 drivers/media/platform/qcom/venus/vdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Bryan O'Donoghue Aug. 29, 2024, 10:30 a.m. UTC | #1
On 25/07/2024 07:10, Nas Chung wrote:
> Avoid uninitialized variable when both V4L2_TYPE_IS_OUTPUT() and
> V4L2_TYPE_IS_CAPTURE() return false.
> 
> Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
> ---
>   drivers/media/platform/qcom/venus/vdec.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
> index d12089370d91..b72b579018e3 100644
> --- a/drivers/media/platform/qcom/venus/vdec.c
> +++ b/drivers/media/platform/qcom/venus/vdec.c
> @@ -161,7 +161,7 @@ find_format_by_index(struct venus_inst *inst, unsigned int index, u32 type)
>   
>   		if (V4L2_TYPE_IS_OUTPUT(type)) {
>   			valid = venus_helper_check_codec(inst, fmt[i].pixfmt);
> -		} else if (V4L2_TYPE_IS_CAPTURE(type)) {
> +		} else {
>   			valid = venus_helper_check_format(inst, fmt[i].pixfmt);
>   
>   			if (fmt[i].pixfmt == V4L2_PIX_FMT_QC10C &&

Can you give an example of the error - compile time I assume, this fixes ?

---
bod
  
Nas Chung Aug. 30, 2024, 4:26 a.m. UTC | #2
Hi, Bryan O'Donoghue.

I received feedback from Hans with detailed information about this error.
https://lore.kernel.org/linux-kernel/a962e94f-a669-40e1-8b28-9ef077cf69be@xs4all.nl/

And, you may face the following error message using the smatch and the sparse test.
"find_format_by_index() error: uninitialized symbol 'valid'."

"make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- -j8 M=drivers/media/platform/qcom/venus C=2 CHECK=smatch"

Or, linux-kernel build with "-Wmaybe-uninitialized" gcc option.
"make ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu- -j8 M=drivers/media/platform/qcom/venus KCFLAGS="-Wmaybe-uninitialized"

>-----Original Message-----
>From: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
>Sent: Thursday, August 29, 2024 7:31 PM
>To: Nas Chung <nas.chung@chipsnmedia.com>; mchehab@kernel.org;
>hverkuil@xs4all.nl; linux-media@vger.kernel.org
>Cc: linux-kernel@vger.kernel.org
>Subject: Re: [RESEND v3 2/3] media: qcom: venus: Fix uninitialized
>variable warning
>
>On 25/07/2024 07:10, Nas Chung wrote:
>> Avoid uninitialized variable when both V4L2_TYPE_IS_OUTPUT() and
>> V4L2_TYPE_IS_CAPTURE() return false.
>>
>> Signed-off-by: Nas Chung <nas.chung@chipsnmedia.com>
>> ---
>>   drivers/media/platform/qcom/venus/vdec.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/media/platform/qcom/venus/vdec.c
>b/drivers/media/platform/qcom/venus/vdec.c
>> index d12089370d91..b72b579018e3 100644
>> --- a/drivers/media/platform/qcom/venus/vdec.c
>> +++ b/drivers/media/platform/qcom/venus/vdec.c
>> @@ -161,7 +161,7 @@ find_format_by_index(struct venus_inst *inst,
>unsigned int index, u32 type)
>>
>>   		if (V4L2_TYPE_IS_OUTPUT(type)) {
>>   			valid = venus_helper_check_codec(inst, fmt[i].pixfmt);
>> -		} else if (V4L2_TYPE_IS_CAPTURE(type)) {
>> +		} else {
>>   			valid = venus_helper_check_format(inst, fmt[i].pixfmt);
>>
>>   			if (fmt[i].pixfmt == V4L2_PIX_FMT_QC10C &&
>
>Can you give an example of the error - compile time I assume, this fixes ?
>
>---
>bod
  

Patch

diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
index d12089370d91..b72b579018e3 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -161,7 +161,7 @@  find_format_by_index(struct venus_inst *inst, unsigned int index, u32 type)
 
 		if (V4L2_TYPE_IS_OUTPUT(type)) {
 			valid = venus_helper_check_codec(inst, fmt[i].pixfmt);
-		} else if (V4L2_TYPE_IS_CAPTURE(type)) {
+		} else {
 			valid = venus_helper_check_format(inst, fmt[i].pixfmt);
 
 			if (fmt[i].pixfmt == V4L2_PIX_FMT_QC10C &&