From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shreyansh Jain Subject: [PATCH] common/dpaax: fix uninitialized table case Date: Wed, 17 Oct 2018 09:05:57 +0000 Message-ID: <20181017090517.14530-1-shreyansh.jain@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Cc: "dev@dpdk.org" , Shreyansh Jain To: "thomas@monjalon.net" Return-path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60082.outbound.protection.outlook.com [40.107.6.82]) by dpdk.org (Postfix) with ESMTP id 4ABC81B10C for ; Wed, 17 Oct 2018 11:05:59 +0200 (CEST) Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" There is a possibility that either because of missing device tree entry or lack of memory, the PA-VA table might not be available. But, the table being transparent, the callers don't necessary check for its initialization state. This is explicitly done during update and translation call. Fixes: 2f3d633aa593 ("common/dpaax: add library for PA/VA translation table= ") Signed-off-by: Shreyansh Jain --- drivers/common/dpaax/dpaax_iova_table.c | 3 +++ drivers/common/dpaax/dpaax_iova_table.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax= /dpaax_iova_table.c index d54267bb7..075053b1a 100644 --- a/drivers/common/dpaax/dpaax_iova_table.c +++ b/drivers/common/dpaax/dpaax_iova_table.c @@ -272,6 +272,9 @@ dpaax_iova_table_update(phys_addr_t paddr, void *vaddr,= size_t length) uintptr_t align_vaddr; phys_addr_t align_paddr; =20 + if (unlikely(dpaax_iova_table_p =3D=3D NULL)) + return -1; + align_paddr =3D paddr & DPAAX_MEM_SPLIT_MASK; align_vaddr =3D ((uintptr_t)vaddr & DPAAX_MEM_SPLIT_MASK); =20 diff --git a/drivers/common/dpaax/dpaax_iova_table.h b/drivers/common/dpaax= /dpaax_iova_table.h index 1109a362c..138827e7b 100644 --- a/drivers/common/dpaax/dpaax_iova_table.h +++ b/drivers/common/dpaax/dpaax_iova_table.h @@ -74,6 +74,9 @@ dpaax_iova_table_get_va(phys_addr_t paddr) { size_t offset =3D paddr & DPAAX_MEM_SPLIT_MASK_OFF; struct dpaax_iovat_element *entry; =20 + if (unlikely(dpaax_iova_table_p =3D=3D NULL)) + return NULL; + entry =3D dpaax_iova_table_p->entries; =20 do { --=20 2.17.1