[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] nbd: fix uninitialized variable warning
From: |
Pan Nengyuan |
Subject: |
Re: [PATCH] nbd: fix uninitialized variable warning |
Date: |
Wed, 8 Jan 2020 10:05:22 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 |
On 1/8/2020 6:24 AM, Eric Blake wrote:
> On 1/5/20 7:54 PM, address@hidden wrote:
>> From: Pan Nengyuan <address@hidden>
>>
>> Fixes:
>> /mnt/sdb/qemu/nbd/server.c: In function 'nbd_handle_request':
>> /mnt/sdb/qemu/nbd/server.c:2313:9: error: 'ret' may be used uninitialized in
>> this function [-Werror=maybe-uninitialized]
>> int ret;
>>
>> Reported-by: Euler Robot <address@hidden>
>
> False positive in the robot - I cannot see any path where ret is used
> uninitialized. Closest might be the handling of NBD_CMD_BLOCK_STATUS, which
> looks like:
>
> if (a || b) {
> if (a) {
> ret = ...;
> if (ret < 0) {
> return ret;
> }
> }
> if (b) {
> ret = ...;
> if (ret < 0) {
> return ret;
> }
> }
> return ret;
> }
>
> In fact, those 'if (ret < 0)' tests are pointless, since nothing else really
> happens before the final return ret.
>
> If I'm right about this being what trips up the robot, does changing 'if (b)'
> into 'else' solve the problem, rather than adding an initializer? And if so,
> can we clean up the pointless code while at it?
Yes, you are right, Changing 'if(b)' to 'else' solves the problem.
I will change it and clean up the pointless code in next version.
Thanks.
>
>> Signed-off-by: Pan Nengyuan <address@hidden>
>> ---
>> nbd/server.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/nbd/server.c b/nbd/server.c
>> index 24ebc1a805..7eb3de0842 100644
>> --- a/nbd/server.c
>> +++ b/nbd/server.c
>> @@ -2310,7 +2310,7 @@ static coroutine_fn int nbd_handle_request(NBDClient
>> *client,
>> NBDRequest *request,
>> uint8_t *data, Error **errp)
>> {
>> - int ret;
>> + int ret = 0;
>> int flags;
>> NBDExport *exp = client->exp;
>> char *msg;
>>
>