Bug 1138539

Summary: forbid negative value for queues of network and bridge
Product: Red Hat Enterprise Linux 7 Reporter: Jincheng Miao <jmiao>
Component: libvirtAssignee: Erik Skultety <eskultet>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.1CC: dyuan, eskultet, honzhang, mzhan, rbalakri
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.2.13-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-11-19 05:52:23 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jincheng Miao 2014-09-05 06:33:01 UTC
description of problem:
For network and bridge, libvirt will report 'out of memory'
when set a negative value for queues.

Version-Release number of selected component (if applicable):
libvirt-1.2.8-1.el7.x86_64
qemu-kvm-rhev-2.1.0-3.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. add following to guest xml
# virsh edit r7
    <interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='-9'/>
    </interface>

2. start it
# virsh start r7
error: Failed to start domain r7
error: out of memory

# virsh dumpxml r7 | grep vhost
      <driver name='vhost' queues='4294967287'/>

Expect result:
in step 1:
# virsh edit rhel7.0
error: 'queues' attribute must be positive number: -9
Failed. Try again? [y,n,f,?]: 

Additional info:
it's ok in libvirt-1.1.1-29.el7.x86_64

Comment 2 Erik Skultety 2014-09-16 08:46:33 UTC
Fixed upstream:

commit ca331a6af40fabe94ccee7bc7996a3fd8b5206c3
Author: Erik Skultety <eskultet>
Date:   Mon Sep 15 09:33:22 2014 +0200

    network: check negative values in bridge queues
    
    We already are checking for negative value, reporting an error, but
    using wrong function and the check only succeeds when a value that
    cannot be converted to number successfully is encountered. This patch
    provides just a minor change in call of the right version
    of function virStrToLong.

v1.2.8-154-gca331a6

Comment 4 hongming 2015-04-10 07:42:25 UTC
Verify it as follows. The result is expected. Move its status to VERIFIED.


# rpm -q libvirt
libvirt-1.2.14-1.el7.x86_64


# virsh edit r7
.....
    <interface type='network'>
      <mac address='52:54:00:50:a4:a2'/>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='-2'/>
    </interface>


error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Extra element devices in interleave
Element domain failed to validate content

Failed. Try again? [y,n,i,f,?]: 
y - yes, start editor again
n - no, throw away my changes
i - turn off validation and try to redefine again
f - force, try to redefine again
? - print this help

Failed. Try again? [y,n,i,f,?]: 
error: 'queues' attribute must be positive number: -2
Failed. Try again? [y,n,f,?]: 
error: 'queues' attribute must be positive number: -2


# virsh edit r7
......
    <interface type='network'>
      <mac address='52:54:00:50:a4:a2'/>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='aa'/>
    </interface>


error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Extra element devices in interleave
Element domain failed to validate content

Failed. Try again? [y,n,i,f,?]: 
error: 'queues' attribute must be positive number: aa
Failed. Try again? [y,n,f,?]: 
error: 'queues' attribute must be positive number: aa

Comment 7 errata-xmlrpc 2015-11-19 05:52:23 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2202.html