From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiao Guangrong Subject: Re: [PATCH v5 29/33] nvdimm acpi: support Get Namespace Label Data function Date: Thu, 29 Oct 2015 10:58:39 +0800 Message-ID: <56318B5F.8010600@linux.intel.com> References: <1446071191-62591-1-git-send-email-guangrong.xiao@linux.intel.com> <1446071191-62591-30-git-send-email-guangrong.xiao@linux.intel.com> <20151028164645.GC1925@stefanha-x1.localdomain> <5631837C.60503@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: pbonzini@redhat.com, imammedo@redhat.com, gleb@kernel.org, mtosatti@redhat.com, mst@redhat.com, rth@twiddle.net, ehabkost@redhat.com, dan.j.williams@intel.com, kvm@vger.kernel.org, qemu-devel@nongnu.org To: Stefan Hajnoczi Return-path: Received: from mga01.intel.com ([192.55.52.88]:65457 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965268AbbJ2DFf (ORCPT ); Wed, 28 Oct 2015 23:05:35 -0400 In-Reply-To: <5631837C.60503@linux.intel.com> Sender: kvm-owner@vger.kernel.org List-ID: On 10/29/2015 10:25 AM, Xiao Guangrong wrote: > > > On 10/29/2015 12:46 AM, Stefan Hajnoczi wrote: >> On Wed, Oct 28, 2015 at 10:26:27PM +0000, Xiao Guangrong wrote: >>> +static void nvdimm_dsm_func_get_label_data(NVDIMMDevice *nvdimm, >>> + nvdimm_dsm_in *in, GArray *out) >>> +{ >>> + NVDIMMClass *nvc = NVDIMM_GET_CLASS(nvdimm); >>> + nvdimm_func_in_get_label_data *get_label_data = &in->func_get_label_data; >>> + void *buf; >>> + uint32_t status = NVDIMM_DSM_STATUS_SUCCESS; >>> + >>> + le32_to_cpus(&get_label_data->offset); >>> + le32_to_cpus(&get_label_data->length); >>> + >>> + nvdimm_debug("Read Label Data: offset %#x length %#x.\n", >>> + get_label_data->offset, get_label_data->length); >>> + >>> + if (nvdimm->label_size < get_label_data->offset + get_label_data->length) { >> >> Integer overflow isn't handled here and it's unclear if that can cause >> problems later on. It's safest to catch it right away instead of >> relying on nvc->read_label_data() to check again. >> > > Good catch, Stefan! I will fix it by adding a additional check: > > if (get_label_data->offset + get_label_data->length > get_label_data->offset) { < Sorry for the typo.