[PATCH] util: fix: duplicated index at nested loop in virNVMeDeviceListCreateReAttachList

Michal Prívozník mprivozn at redhat.com
Thu Jul 29 15:45:33 UTC 2021


On 7/29/21 1:51 PM, wang.yi59 at zte.com.cn wrote:
> Hi Michal,
> 
> Thanks for your reply.
> 
>> On 7/29/21 4:16 AM, Yi Wang wrote:
>>> From: Jia Zhou <zhou.jia2 at zte.com.cn>
>>>
>>> When loop in function virNVMeDeviceListCreateReAttachList() there may be
>>> reused index @i, this patch fix this by using a new @j.
>>>
>>> Signed-off-by: Jia Zhou <zhou.jia2 at zte.com.cn>
>>> Signed-off-by: Yi Wang <wang.yi59 at zte.com.cn>
>>> ---
>>>  src/util/virnvme.c | 6 +++---
>>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/src/util/virnvme.c b/src/util/virnvme.c
>>> index 49102e3..b54a195 100644
>>> --- a/src/util/virnvme.c
>>> +++ b/src/util/virnvme.c
>>> @@ -399,7 +399,7 @@ virNVMeDeviceListCreateReAttachList(virNVMeDeviceListPtr activeList,
>>>                                      virNVMeDeviceListPtr toReAttachList)
>>>  {
>>>      g_autoptr(virPCIDeviceList) pciDevices = NULL;
>>> -    size_t i;
>>> +    size_t i, j;

This new variable can be declared inside the loop since it's needed only
there.

>>>
>>>      if (!(pciDevices = virPCIDeviceListNew()))
>>>          return NULL;
>>> @@ -412,8 +412,8 @@ virNVMeDeviceListCreateReAttachList(virNVMeDeviceListPtr activeList,
>>>          /* Check if there is any other NVMe device with the same PCI address as
>>>           * @d. To simplify this, let's just count how many NVMe devices with
>>>           * the same PCI address there are on the @activeList. */
>>> -        for (i = 0; i < activeList->count; i++) {
>>> -            virNVMeDevicePtr other = activeList->devs[i];
>>> +        for (j = 0; j < activeList->count; j++) {
>>> +            virNVMeDevicePtr other = activeList->devs[j];

This doesn't look rebased on the top of anything recent. In commit
v7.3.0-rc1~229 I've dropped internal virXXXPtr and replaced them with
virXXX *.

>>>
>>>              if (!virPCIDeviceAddressEqual(&d->address, &other->address))
>>>                  continue;
>>>
>>
>> Ooops yes. This is a bug. However, I'd prefer that 'j' would be defined
>> inside the loop.
>>
>> Also, I'm having difficulties applying this patch. Partly because it's
>> multipart e-mail and even if I extract text/plain part then git am is
>> still unhappy. Can you please use git send-email?
> 
> Actually I used git send-email to send this patch, and I have forwarded this
> to our IT department, but unfortunately that may take a long long time :(

Yeah, it would be great if this could get resolved.

> 
> Would you please apply this patch manually first? Many thanks.

I've done that. Fortunately, the change was simple enough and it fixes a
bug in the code I've written.

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

Michal




More information about the libvir-list mailing list