OSDN Git Service

acpi: fix assert failure caused by commit 35c5a52d
authorHaozhong Zhang <haozhong.zhang@intel.com>
Wed, 19 Oct 2016 09:19:25 +0000 (17:19 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 1 Nov 2016 17:21:09 +0000 (19:21 +0200)
commit53000638f233d6ba1d584a68b74f2cde79615b80
treeb450c7bfb462c17ce38fa779a0241eb7e6afa6a9
parent698ae42b9124dce23e03d0fea2e635b70540ef13
acpi: fix assert failure caused by commit 35c5a52d

Commit 35c5a52d "acpi: do not use TARGET_PAGE_SIZE" changed struct
NvdimmDsmIn from a variable-size structure to a fixed-size structure of
4096 bytes. It forgot to adjust an assert in
nvdimm_dsm_set_label_data(..., NvdimmDsmIn *in, ...):
    assert(sizeof(*in) + sizeof(*set_label_data) + set_label_data->length <=
           4096);
which could crash QEMU when guest writes NVDIMM labels.

Fix it by replacing sizeof(*in) by offsetof(NvdimmDsmIn, arg3).

Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
Reported-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/acpi/nvdimm.c