• L
    Fix crash in virNetDevGetVirtualFunctions · 08b700b4
    Laine Stump 提交于
    Commit 9a3ff01d (which was ACKed at
    the end of January, but for some reason didn't get pushed until during
    the 1.0.4 freeze) fixed the logic in virPCIGetVirtualFunctions().
    Unfortunately, a typo in the fix (replacing VIR_REALLOC_N with
    VIR_ALLOC_N during code movement) caused not only a memory leak, but
    also resulted in most of the elements of the result array being
    replaced with NULL. virNetDevGetVirtualFunctions() assumed (and I think
    rightly so) that virPCIGetVirtualFunctions() wouldn't return any NULL
    elements in the array, so it ended up segfaulting.
    
    This was found when attempting to use a virtual network with an
    auto-created pool of SRIOV VFs, e.g.:
    
        <forward mode='hostdev' managed='yes'>
          <pf dev='eth4'/>
        </forward>
    
    (the pool of PCI addresses is discovered by calling
    virNetDevGetVirtualFunctions() on the PF dev).
    08b700b4
virpci.c 62.7 KB