qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4] vl: exit if maxcpus is negative


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH v4] vl: exit if maxcpus is negative
Date: Tue, 29 Aug 2017 10:45:01 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

Hi Seeteena,

On 08/29/2017 02:45 AM, Seeteena Thoufeek wrote:
---Steps to Reproduce---

When passed a negative number to 'maxcpus' parameter, Qemu aborts
with a core dump.

Run the following command with maxcpus argument as negative number

ppc64-softmmu/qemu-system-ppc64 --nographic -vga none -machine
pseries,accel=kvm,kvm-type=HV -m size=200g -device virtio-blk-pci,
drive=rootdisk -drive file=/home/images/pegas-1.0-ppc64le.qcow2,
if=none,cache=none,id=rootdisk,format=qcow2 -monitor telnet
:127.0.0.1:1234,server,nowait -net nic,model=virtio -net
user -redir tcp:2000::22 -device nec-usb-xhci -smp 8,cores=1,
threads=1,maxcpus=-12

(process:12149): GLib-ERROR **: gmem.c:130: failed to allocate
  18446744073709550568 bytes

Trace/breakpoint trap

Reported-by: R.Nageswara Sastry <address@hidden>
Signed-off-by: Seeteena Thoufeek <address@hidden>
---
v1 -> v2:
   - Fix the error check in vl.c to make it generic.
v2 -> v3:
   - Fix coding style pointed out by patchew.
   - Fix check for "<= 0" instead of just "< 0".
v3 -> v4:
   - Fix subject line.
   - Removed space before ":" from vl.c:1248
   - Removed Reviewed-by: flag.
---
  vl.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/vl.c b/vl.c
index 8e247cc..2d9e73d 100644
--- a/vl.c
+++ b/vl.c
@@ -1244,7 +1244,10 @@ static void smp_parse(QemuOpts *opts)
          }
max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus);
-
+        if (max_cpus <= 0) {
+            error_report("Invalid max_cpus: %d", max_cpus);

I disagree with this patch, I think the correct fix is to declare max_cpus as unsigned.
Looking at the codebase I can't find any signed use of it.

+            exit(1);
+        }
          if (max_cpus < cpus) {
              error_report("maxcpus must be equal to or greater than smp");
              exit(1);


Regards,

Phil.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]