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>
This commit is contained in:
parent
698ae42b91
commit
53000638f2
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user