Commit 53000638 authored by Haozhong Zhang's avatar Haozhong Zhang Committed by Michael S. Tsirkin
Browse files

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: default avatarHaozhong Zhang <haozhong.zhang@intel.com>
Reported-by: default avatarDan Williams <dan.j.williams@intel.com>
Tested-by: default avatarDan Williams <dan.j.williams@intel.com>
Reviewed-by: default avatarXiao Guangrong <guangrong.xiao@linux.intel.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 698ae42b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -757,8 +757,8 @@ static void nvdimm_dsm_set_label_data(NVDIMMDevice *nvdimm, NvdimmDsmIn *in,
        return;
    }

    assert(sizeof(*in) + sizeof(*set_label_data) + set_label_data->length <=
           4096);
    assert(offsetof(NvdimmDsmIn, arg3) +
           sizeof(*set_label_data) + set_label_data->length <= 4096);

    nvc->write_label_data(nvdimm, set_label_data->in_buf,
                          set_label_data->length, set_label_data->offset);