From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52060) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eMtGG-0005HH-BJ for qemu-devel@nongnu.org; Thu, 07 Dec 2017 05:18:38 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eMtGF-0003AN-G6 for qemu-devel@nongnu.org; Thu, 07 Dec 2017 05:18:36 -0500 Received: from mga06.intel.com ([134.134.136.31]:34562) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eMtGF-000355-6H for qemu-devel@nongnu.org; Thu, 07 Dec 2017 05:18:35 -0500 From: Haozhong Zhang Date: Thu, 7 Dec 2017 18:18:06 +0800 Message-Id: <20171207101812.23602-5-haozhong.zhang@intel.com> In-Reply-To: <20171207101812.23602-1-haozhong.zhang@intel.com> References: <20171207101812.23602-1-haozhong.zhang@intel.com> Subject: [Qemu-devel] [RFC QEMU PATCH v4 04/10] nvdimm: do not intiailize nvdimm->label_data if label size is zero List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Anthony Perard , Konrad Rzeszutek Wilk , Dan Williams , Chao Peng , Haozhong Zhang , Xiao Guangrong , "Michael S. Tsirkin" , Igor Mammedov The memory region of vNVDIMM on Xen is a RAM memory region, so memory_region_get_ram_ptr() cannot be used in nvdimm_realize() to get a pointer to the label data area in that region. To be worse, it may abort QEMU. As Xen currently does not support labels (i.e. label size is 0) and every access in QEMU to labels is led by a label size check, let's not intiailize nvdimm->label_data if the label size is 0. Signed-off-by: Haozhong Zhang --- Cc: Xiao Guangrong Cc: "Michael S. Tsirkin" Cc: Igor Mammedov --- hw/mem/nvdimm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c index 952fce5ec8..3e58538b99 100644 --- a/hw/mem/nvdimm.c +++ b/hw/mem/nvdimm.c @@ -87,7 +87,15 @@ static void nvdimm_realize(PCDIMMDevice *dimm, Error **errp) align = memory_region_get_alignment(mr); pmem_size = size - nvdimm->label_size; - nvdimm->label_data = memory_region_get_ram_ptr(mr) + pmem_size; + /* + * The memory region of vNVDIMM on Xen is not a RAM memory region, + * so memory_region_get_ram_ptr() below will abort QEMU. In + * addition that Xen currently does not support vNVDIMM labels + * (i.e. label_size is zero here), let's not initialize of the + * pointer to label data if the label size is zero. + */ + if (nvdimm->label_size) + nvdimm->label_data = memory_region_get_ram_ptr(mr) + pmem_size; pmem_size = QEMU_ALIGN_DOWN(pmem_size, align); if (size <= nvdimm->label_size || !pmem_size) { -- 2.15.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC QEMU PATCH v4 04/10] nvdimm: do not intiailize nvdimm->label_data if label size is zero Date: Thu, 7 Dec 2017 18:18:06 +0800 Message-ID: <20171207101812.23602-5-haozhong.zhang@intel.com> References: <20171207101812.23602-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eMtGP-0008TP-NP for xen-devel@lists.xenproject.org; Thu, 07 Dec 2017 10:18:45 +0000 In-Reply-To: <20171207101812.23602-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org Cc: Haozhong Zhang , Stefano Stabellini , Xiao Guangrong , "Michael S. Tsirkin" , Igor Mammedov , Anthony Perard , Chao Peng , Dan Williams List-Id: xen-devel@lists.xenproject.org VGhlIG1lbW9yeSByZWdpb24gb2Ygdk5WRElNTSBvbiBYZW4gaXMgYSBSQU0gbWVtb3J5IHJlZ2lv biwgc28KbWVtb3J5X3JlZ2lvbl9nZXRfcmFtX3B0cigpIGNhbm5vdCBiZSB1c2VkIGluIG52ZGlt bV9yZWFsaXplKCkgdG8gZ2V0CmEgcG9pbnRlciB0byB0aGUgbGFiZWwgZGF0YSBhcmVhIGluIHRo YXQgcmVnaW9uLiBUbyBiZSB3b3JzZSwgaXQgbWF5CmFib3J0IFFFTVUuIEFzIFhlbiBjdXJyZW50 bHkgZG9lcyBub3Qgc3VwcG9ydCBsYWJlbHMgKGkuZS4gbGFiZWwgc2l6ZQppcyAwKSBhbmQgZXZl cnkgYWNjZXNzIGluIFFFTVUgdG8gbGFiZWxzIGlzIGxlZCBieSBhIGxhYmVsIHNpemUgY2hlY2ss CmxldCdzIG5vdCBpbnRpYWlsaXplIG52ZGltbS0+bGFiZWxfZGF0YSBpZiB0aGUgbGFiZWwgc2l6 ZSBpcyAwLgoKU2lnbmVkLW9mZi1ieTogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGlu dGVsLmNvbT4KLS0tCkNjOiBYaWFvIEd1YW5ncm9uZyA8eGlhb2d1YW5ncm9uZy5lcmljQGdtYWls LmNvbT4KQ2M6ICJNaWNoYWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0LmNvbT4KQ2M6IElnb3Ig TWFtbWVkb3YgPGltYW1tZWRvQHJlZGhhdC5jb20+Ci0tLQogaHcvbWVtL252ZGltbS5jIHwgMTAg KysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL2h3L21lbS9udmRpbW0uYyBiL2h3L21lbS9udmRpbW0uYwppbmRleCA5 NTJmY2U1ZWM4Li4zZTU4NTM4Yjk5IDEwMDY0NAotLS0gYS9ody9tZW0vbnZkaW1tLmMKKysrIGIv aHcvbWVtL252ZGltbS5jCkBAIC04Nyw3ICs4NywxNSBAQCBzdGF0aWMgdm9pZCBudmRpbW1fcmVh bGl6ZShQQ0RJTU1EZXZpY2UgKmRpbW0sIEVycm9yICoqZXJycCkKICAgICBhbGlnbiA9IG1lbW9y eV9yZWdpb25fZ2V0X2FsaWdubWVudChtcik7CiAKICAgICBwbWVtX3NpemUgPSBzaXplIC0gbnZk aW1tLT5sYWJlbF9zaXplOwotICAgIG52ZGltbS0+bGFiZWxfZGF0YSA9IG1lbW9yeV9yZWdpb25f Z2V0X3JhbV9wdHIobXIpICsgcG1lbV9zaXplOworICAgIC8qCisgICAgICogVGhlIG1lbW9yeSBy ZWdpb24gb2Ygdk5WRElNTSBvbiBYZW4gaXMgbm90IGEgUkFNIG1lbW9yeSByZWdpb24sCisgICAg ICogc28gbWVtb3J5X3JlZ2lvbl9nZXRfcmFtX3B0cigpIGJlbG93IHdpbGwgYWJvcnQgUUVNVS4g SW4KKyAgICAgKiBhZGRpdGlvbiB0aGF0IFhlbiBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydCB2 TlZESU1NIGxhYmVscworICAgICAqIChpLmUuIGxhYmVsX3NpemUgaXMgemVybyBoZXJlKSwgbGV0 J3Mgbm90IGluaXRpYWxpemUgb2YgdGhlCisgICAgICogcG9pbnRlciB0byBsYWJlbCBkYXRhIGlm IHRoZSBsYWJlbCBzaXplIGlzIHplcm8uCisgICAgICovCisgICAgaWYgKG52ZGltbS0+bGFiZWxf c2l6ZSkKKyAgICAgICAgbnZkaW1tLT5sYWJlbF9kYXRhID0gbWVtb3J5X3JlZ2lvbl9nZXRfcmFt X3B0cihtcikgKyBwbWVtX3NpemU7CiAgICAgcG1lbV9zaXplID0gUUVNVV9BTElHTl9ET1dOKHBt ZW1fc2l6ZSwgYWxpZ24pOwogCiAgICAgaWYgKHNpemUgPD0gbnZkaW1tLT5sYWJlbF9zaXplIHx8 ICFwbWVtX3NpemUpIHsKLS0gCjIuMTUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0 aW5mby94ZW4tZGV2ZWw=