[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v5 02/11] xen/arm: avoid repetitive checking in process_shm_node


  • To: Michal Orzel <michal.orzel@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Penny Zheng <penny.zheng@xxxxxxx>
  • Date: Thu, 7 Dec 2023 17:56:54 +0800
  • Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com])
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=amd.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0)
  • Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yBG2u2yERX6y59klU8cmRDWiTUFOl60ag5KyakPDLsg=; b=NlWC12hND5I87LULQSJInciJIQSBfiy61e/BFT+ixtri5iAyJQ70Oxq1WscGDvHVSEnto/wgTxV+a6XEyQGXDtsR/f20ckK2Y7TatiKYqdUPScsGMZTfDjzpEEWiBSmCOqfW5Y8YRRe/oOx+1LDvsJ6jX8m1MUQCUmSmix/ktFVCJE4aZMApaTQJuwryfkb8/foYGtH0l6egMMxSJJ9JyeCWjDPVxsF4udydktXM9dHodkq+TVQ1LsHGXQY43UredN15y6D8U/8CYM5eSc0pT4qFl8pXl/F9PcIKGi7T3paLQQ54RsyuQ3uYyN530W8z63lvo2EkbwlZ8gurKX/LAw==
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yBG2u2yERX6y59klU8cmRDWiTUFOl60ag5KyakPDLsg=; b=h5yp1qXvPZ+hFVPFuDx98DA4XeY9Zu6NUmEWoXteYEAeLU+7Ei3uzIwvpf0HX07AdRw55PeyFl9FFWxF9X7XzQjBsFTJY/Ob/dcy5vWEhcwj751uOHC1Da5P/d3V3rjUigws8YL2MuzDvkxQH4iDppmC1/SNa/K9m2PHHbfTqWoAK0BsAD3VrpnJ2Qv5vHDpT3PGJrj7zxMSBlT/HwreAIxwZB/DKWD+resDY2e0/9zoNmDOf5MM462GshrtKuox26ol90nkFkRfJjhf3lsuR3ND3bMfUBNZ1xLq8Onswe7rkkann8/IMShoe66b8PCnn+cEd57WD0qVNh2oMUWTsg==
  • Arc-seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=EUryys58tZ1ezxgxk09GlD/GS/izIaZSkIwKfu0Eovn5+CNd4HQJciXcfmDIdfBY1A67OGMV49mbCOcylBIKeqwgvCgs7rK5GTsf+7PfgrdD0n4gGE6LA1862fwwOMDVvaC13LtzISgbFmUpxv8UReMalKYvsrwRUFEQD353rkJxLMbAnc23ZEUwTJsiQwt8xl8Ch0+QqYV+7hPyLwFB7PAOsKhJuOrrsXxLmP/wABOxIwkmLsiUIeQ/R0yGibUeKHhSMqPNTnlalP+RwIXhf5UcfZsAG60OB4YAOApQFpnOybOXo36obII8c74FxUhXXzk55FLwvAayQ4PzNDeb1w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i92jiHRw/mvqUUsnzIUjxOZItrQf6IePKBKUkCtWwA0mYqXaxislCiHRi15VMwrvIH2aA3PvC1m12xhF6+bURI2kRqR2N1j7b+7CL6bj6qKXMTbpqMONu/kIBBPC5qbe6zQSeCrSb8fG3uN5t9Icre8zqaUNrEkn8zVYKZ7Stf1ylcwbkQNQwIXPXAF9qnPtNikLfqGPZ1weZ8HqeuqVldXO6o/rnBAroMN454q5Zgt9FSASMHd0qGwsoIlobyUw2u2X6bK02hk4t44UaFqDgmJuo1zgQZZXaU2TolaApT99ETIuV+3bnQZZRz1HQ6AJMYHTAPxebbHOF1edDThA8Q==
  • Cc: <wei.chen@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "Julien Grall" <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 07 Dec 2023 10:39:23 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true

Hi Michal

On 2023/12/6 19:35, Michal Orzel wrote:
Hi Penny,

On 06/12/2023 10:06, Penny Zheng wrote:


Putting overlap and overflow checking in the loop is causing repetitive
operation, so this commit extracts both checking outside the loop.

Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx>
In general the patch looks good to me:
Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>


Thx~

That said, there are 2 things I realized during review.

---
v6:
new commit
---
  xen/arch/arm/static-shmem.c | 39 +++++++++++++++----------------------
  1 file changed, 16 insertions(+), 23 deletions(-)

diff --git a/xen/arch/arm/static-shmem.c b/xen/arch/arm/static-shmem.c
index cb268cd2ed..1a1a9386e4 100644
--- a/xen/arch/arm/static-shmem.c
+++ b/xen/arch/arm/static-shmem.c
@@ -349,7 +349,7 @@ int __init process_shm_node(const void *fdt, int node, 
uint32_t address_cells,
  {
      const struct fdt_property *prop, *prop_id, *prop_role;
      const __be32 *cell;
-    paddr_t paddr, gaddr, size;
+    paddr_t paddr, gaddr, size, end;
      struct meminfo *mem = &bootinfo.reserved_mem;
      unsigned int i;
      int len;
@@ -422,6 +422,13 @@ int __init process_shm_node(const void *fdt, int node, 
uint32_t address_cells,
          return -EINVAL;
      }

+    end = paddr + size;
+    if ( end <= paddr )
+    {
+        printk("fdt: static shared memory region %s overflow\n", shm_id);
+        return -EINVAL;
+    }
+
      for ( i = 0; i < mem->nr_banks; i++ )
      {
          /*
@@ -441,30 +448,13 @@ int __init process_shm_node(const void *fdt, int node, 
uint32_t address_cells,
                  return -EINVAL;
              }
          }
+        else if ( strcmp(shm_id, mem->bank[i].shm_id) != 0 )
+            continue;
          else
          {
-            paddr_t end = paddr + size;
-            paddr_t bank_end = mem->bank[i].start + mem->bank[i].size;
-
-            if ( (end <= paddr) || (bank_end <= mem->bank[i].start) )
You are iterating over reserved memory regions in general, so apart from shmem 
regions there might be truly /reserved ones.
It appears that we don't have overflow check in device_tree_get_meminfo, so 
this second check was the only place to detect that
(protected by a feature, so not very useful) :) This is just an observation and 
I agree to drop it. We should be checking for an
overflow in device_tree_get_meminfo.


True~

The second observation I made is that we don't seem to assign and check the 
return code from device_tree_for_each_node.
This means, that any error while parsing the early fdt (e.g. static shm issues) 
does not stop Xen from booting, which might result in strange behavior later on.
If others agree, I'm ok to send a fix for that.

~Michal

Penny Zheng
Many thanks



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.