spapr: sanity check size of the CAS buffer
commit827b17c468b0dae69f82f852958d16f4bf6d6bf0
authorGreg Kurz <groug@kaod.org>
Wed, 4 Oct 2017 09:02:31 +0000 (4 11:02 +0200)
committerDavid Gibson <david@gibson.dropbear.id.au>
Mon, 16 Oct 2017 23:34:00 +0000 (17 10:34 +1100)
tree8ec767ad79cd15c27962b8523b3aeafaa5ec5f46
parentdc1b5eee868d0ce18dd83e472cdd282257fe6938
spapr: sanity check size of the CAS buffer

The CAS buffer is provided by SLOF. A broken SLOF could pass a silly
size: either smaller than the diff header, in which case the current
code will try to allocate 16 Exabytes of memory and g_malloc0() will
abort, or bigger than the maximum memory provisioned for SLOF (ie,
40 Megabytes), which doesn't make sense. Both cases indicate that
SLOF has a bug.

Let's print out an explicit error message and exit since rebooting as
we do with other errors would only result in a reset loop.

Signed-off-by: Greg Kurz <groug@kaod.org>
[dwg: Fix format specifier that broke 32-bit builds]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr.c