qemu/hw/s390x
Cornelia Huck 882b3b9769 s390x/css: handle cssid 255 correctly
The cssid 255 is reserved but still valid from an architectural
point of view. However, feeding a bogus schid of 0xffffffff into
the virtio hypercall will lead to a crash:

Stack trace of thread 138363:
        #0  0x00000000100d168c css_find_subch (qemu-system-s390x)
        #1  0x00000000100d3290 virtio_ccw_hcall_notify
        #2  0x00000000100cbf60 s390_virtio_hypercall
        #3  0x000000001010ff7a handle_hypercall
        #4  0x0000000010079ed4 kvm_cpu_exec (qemu-system-s390x)
        #5  0x00000000100609b4 qemu_kvm_cpu_thread_fn
        #6  0x000003ff8b887bb4 start_thread (libpthread.so.0)
        #7  0x000003ff8b78df0a thread_start (libc.so.6)

This is because the css array was only allocated for 0..254
instead of 0..255.

Let's fix this by bumping MAX_CSSID to 255 and fencing off the
reserved cssid of 255 during css image allocation.

Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
2016-09-05 15:15:16 +02:00
..
ccw-device.c s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
ccw-device.h s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
css-bridge.c s390x/css: provide a dev_path for css devices 2016-07-20 15:47:25 +02:00
css.c s390x/css: handle cssid 255 correctly 2016-09-05 15:15:16 +02:00
event-facility.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
ipl.c s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
ipl.h s390x/ipl: fix reboots for migration from different bios 2016-07-11 09:48:05 +02:00
Makefile.objs s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
s390-pci-bus.c s390x/pci: assert zpci always existing 2016-09-05 15:15:16 +02:00
s390-pci-bus.h Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
s390-pci-inst.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
s390-pci-inst.h Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
s390-skeys-kvm.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
s390-skeys.c s390: use FILE instead of QEMUFile for creating text file 2016-05-26 11:31:05 +05:30
s390-virtio-ccw.c s390x: add compat machine for 2.8 2016-09-05 15:15:16 +02:00
s390-virtio-hcall.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
s390-virtio.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
s390-virtio.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sclp.c s390/sclp: cache the sclp device 2016-09-05 15:15:16 +02:00
sclpcpu.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
sclpquiesce.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
virtio-ccw.c s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
virtio-ccw.h Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00