[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH v2] qemuOpenVhostNet: Decrease vhostfdSize on open failure



On 28.05.2013 18:43, Laine Stump wrote:
> On 05/27/2013 02:44 AM, Michal Privoznik wrote:
>> Currently, if there's an error opening /dev/vhost-net (e.g. because
>> it doesn't exist) but it's not required we proceed with vhostfd array
>> filled with -1 and vhostfdSize unchanged. Later, when constructing
>> the qemu command line only non-negative items within vhostfd array
>> are taken into account. This means, vhostfdSize may be greater than
>> the actual count of non-negative items in vhostfd array. This results
>> in improper command line arguments being generated, e.g.:
>>
>> -netdev tap,fd=21,id=hostnet0,vhost=on,vhostfd=(null)
>> ---
>>  src/qemu/qemu_command.c | 14 ++++++++------
>>  1 file changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>> index 0373626..c4a162a 100644
>> --- a/src/qemu/qemu_command.c
>> +++ b/src/qemu/qemu_command.c
>> @@ -486,6 +486,10 @@ qemuOpenVhostNet(virDomainDefPtr def,
>>                                         "but is unavailable"));
>>                  goto error;
>>              }
>> +            VIR_WARN("Unable to open vhost-net. Opened so far %d, requested %d",
>> +                     i, *vhostfdSize);
>> +            *vhostfdSize = i;
>> +            break;
>>          }
>>      }
>>      virDomainAuditNetDevice(def, net, "/dev/vhost-net", *vhostfdSize);
>> @@ -6560,12 +6564,10 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
>>      }
>>  
>>      for (i = 0; i < vhostfdSize; i++) {
>> -        if (vhostfd[i] >= 0) {
>> -            virCommandTransferFD(cmd, vhostfd[i]);
>> -            if (virAsprintf(&vhostfdName[i], "%d", vhostfd[i]) < 0) {
>> -                virReportOOMError();
>> -                goto cleanup;
>> -            }
>> +        virCommandTransferFD(cmd, vhostfd[i]);
>> +        if (virAsprintf(&vhostfdName[i], "%d", vhostfd[i]) < 0) {
>> +            virReportOOMError();
>> +            goto cleanup;
>>          }
>>      }
>>  
> 
> ACK.
> 

Thanks, pushed.

michal


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]