Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2004755imm; Thu, 7 Jun 2018 04:01:56 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJk4ToeyhHDQq2hK27hE/BDjqZTq/eXTH66lOfGS8kN6CMDoN38vKwGnvnqaeUWaaqqUvVS X-Received: by 2002:a63:583:: with SMTP id 125-v6mr1146094pgf.385.1528369316236; Thu, 07 Jun 2018 04:01:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528369316; cv=none; d=google.com; s=arc-20160816; b=0tDZrHFP7nLS8vEVEO/zE70VEWDET2BJAMr45IN0cUOwSxStYuEZ9Q1/eHh0fUimJ2 eKIMA7I8O6T+FHPnQPw9eyYTigDOBFX6iOaT+dwtxBtPUMSbyasZtTTjSgSz0y8/FYdp qo8SdUe6TjpsZhkYr1mQ4wJlqnncarks5Ji2v11wD6dzMdkrz5ueCzcldcWfvSU8QLsV gbR280ZAVb2O9SGhS/WKq+DnAaqDSzcpH+l3U3h1mt5JBRNiLivj3f6by1yxxYp20Llu P1BWWTzhYSZQDQ1fbkO+ZP2SlsthR07Tw3a7Fqp7eNLJjVk80YauAk4tl2AJmXoF5lH6 b61w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject :arc-authentication-results; bh=6mdwnn6KXZ2u8zU0eZj3JXsA0psR5c6sAKJOEXkTri4=; b=bhvf0Vl2cvHW88twYAoXpCKcV0jGW5YaaFrBRWcmfHvFIk+H6F6QZX6lJZ6Ts8CFiI Empvs1pyLcUVacnxO14FBRJaGR8bSsAVvoWODx/NiuUOLouPK5VJTG1zId6NDmuzJrHb x33tUYm5jDemImSsfIeHeoci9byWHf2LJMibZKdIka14TvJljqbSwLZ65K80REDMN+TJ Qg+gEOTUwgxFm1dVN/gV9ex+ZBMq/HkwdNpIiaSSUNaWi4D/YGr+Byrhr3Sdkxsnfta/ /O9WfCQwjudhiiGxHOmtbtg9v2gNS4UV9Q5h3r5NBEDjnPLZoDlQgXPYXNZzyFJs3KId 4nFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x23-v6si30809287pfe.318.2018.06.07.04.01.41; Thu, 07 Jun 2018 04:01:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753720AbeFGK2a (ORCPT + 99 others); Thu, 7 Jun 2018 06:28:30 -0400 Received: from smtp.eu.citrix.com ([185.25.65.24]:3040 "EHLO SMTP.EU.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753260AbeFGK22 (ORCPT ); Thu, 7 Jun 2018 06:28:28 -0400 X-IronPort-AV: E=Sophos;i="5.49,486,1520899200"; d="scan'208";a="74292376" Subject: Re: [Xen-devel] [PATCH] xen/privcmd: fix static checker warning To: Paul Durrant , , CC: Juergen Gross , Boris Ostrovsky , Dan Carpenter References: <1528366873-25430-1-git-send-email-paul.durrant@citrix.com> From: Andrew Cooper Openpgp: preference=signencrypt Autocrypt: addr=andrew.cooper3@citrix.com; prefer-encrypt=mutual; keydata= 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 6+ahAA== Message-ID: <8666edd3-2d4a-82f5-8354-47ae0906681f@citrix.com> Date: Thu, 7 Jun 2018 11:28:26 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <1528366873-25430-1-git-send-email-paul.durrant@citrix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Content-Language: en-GB X-ClientProxiedBy: AMSPEX02CAS02.citrite.net (10.69.22.113) To AMSPEX02CL02.citrite.net (10.69.22.126) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/06/18 11:21, Paul Durrant wrote: > Commit 3ad0876554ca ("xen/privcmd: add IOCTL_PRIVCMD_MMAP_RESOURCE") > introduced a static checker warning: > > drivers/xen/privcmd.c:827 privcmd_ioctl_mmap_resource() > warn: passing casted pointer 'pfns' to 'xen_remap_domain_mfn_array()' > 64 vs 32. > > caused by this cast: > > 827 num = xen_remap_domain_mfn_array(vma, > 828 kdata.addr & PAGE_MASK, > 829 pfns, kdata.num, (int *)pfns, > ^^^^^^^^^^^ > > The reason for the cast is that xen_remap_domain_mfn_array() requires an > array of ints to store error codes. It is actually safe to re-use the > pfns array for this purpose but it does look odd (as well as leading to > the warning). It would also be easy for a future implementation change > to make this re-use unsafe so this patch modifies privcmd to use a > separately allocated array for error codes. > > Reported-by: Dan Carpenter > Signed-off-by: Paul Durrant It may be safe to reuse pfns[] as the storage space for the errs array, but code is incorrect when sizeof(pfn) != sizeof(int).  In such a case, you skip over every other err, and second half of pfns[] is junk from the point of view of the errs loop. ~Andrew > --- > Cc: Boris Ostrovsky > Cc: Juergen Gross > Cc: Dan Carpenter > --- > drivers/xen/privcmd.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c > index 8ae0349..8507c13 100644 > --- a/drivers/xen/privcmd.c > +++ b/drivers/xen/privcmd.c > @@ -822,11 +822,18 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata) > unsigned int domid = > (xdata.flags & XENMEM_rsrc_acq_caller_owned) ? > DOMID_SELF : kdata.dom; > + int *errs; > int num; > > + errs = kcalloc(kdata.num, sizeof(*errs), GFP_KERNEL); > + if (!errs) { > + rc = -ENOMEM; > + goto out; > + } > + > num = xen_remap_domain_mfn_array(vma, > kdata.addr & PAGE_MASK, > - pfns, kdata.num, (int *)pfns, > + pfns, kdata.num, errs, > vma->vm_page_prot, > domid, > vma->vm_private_data); > @@ -836,12 +843,14 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata) > unsigned int i; > > for (i = 0; i < num; i++) { > - rc = pfns[i]; > + rc = errs[i]; > if (rc < 0) > break; > } > } else > rc = 0; > + > + kfree(errs); > } > > out: