From patchwork Mon Jun 4 12:09:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Krawczyk X-Patchwork-Id: 40623 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 05A015F71; Mon, 4 Jun 2018 14:10:33 +0200 (CEST) Received: from mail-lf0-f52.google.com (mail-lf0-f52.google.com [209.85.215.52]) by dpdk.org (Postfix) with ESMTP id 3C7E371B3 for ; Mon, 4 Jun 2018 14:10:16 +0200 (CEST) Received: by mail-lf0-f52.google.com with SMTP id i83-v6so12655047lfh.5 for ; Mon, 04 Jun 2018 05:10:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=SAtXlHMV0FBsEo0Xi1UinCpHnc+YFrmUOsBuiGZuUnk=; b=YCSZzO82gko/08X3+TmJstEiqnoCv21JMij9U/QH+jSQ/CwUKN44xEgX+pf0zaXrd0 ZQl3THmJ0huqA24of9CwuvydfusxbbRMtg/lHE/LJfJ13l40qeH6dJGL2uueFM0Gm7V1 hLI9ScHWEq7L7N4RwdrNj20XhntHK71E0ztHW2apxtUQU6FeEgUQwpQC7OW239gMucDy ViisCL0W5uBBAJNB7Z1FDMW2HmfZTFx9R+ikOGHhGTjap/dKOXdURSzDdrFlntL1SbKe +NjqK2SkCQZSVc8cfK5axwjnTaxfp6P+c+B9o7UoIAH3Ego4URz/6JFRt7S0u+4tvyvR rrVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=SAtXlHMV0FBsEo0Xi1UinCpHnc+YFrmUOsBuiGZuUnk=; b=GzMdkWBqx344GyIec/7ZToU6NKCNfzziFVwhGYZIwsXKzqFaTlh9S6Hvrqx8VmIQ7I YW3nz8FOogg3UlHEAq1qz3bAuz1o0hMyE/GqlOhax0ItzwIzq/LH5Q+7vPXa8VUfXs4I saCN1iOMETHbnCCB08r3vqEPCDOpc99BVDtj+DUni+Ht4cxe0IpXR3Xgu35wpMn18zdt EIUyttCAp71wsfi43TQ2m99kvuHr/deC3XsIulZ4++nvALda2Wh19DOgjSPpzE0CxC/P Sv18kgGoML5uvjczwbmOfXzBIDeaQm0nb6aNqO4paTWztiNfr0qrfA59MsnqgdSiwXlU hfyA== X-Gm-Message-State: APt69E2v0hQ2R/vhZpkpRQe8UJ92P3J9LLu6jIOAVyokiOoaQ5lVFeaP X08lRapXEUGhXetbqXWt+AJLVn2AfVA= X-Google-Smtp-Source: ADUXVKJn507NmTlTBxZtxKWkIpKkkp8R67YLmi/xwPRy4My28yosAyWxtzy1mXXLW6alWnzjp9BCQw== X-Received: by 2002:a19:e218:: with SMTP id z24-v6mr9249508lfg.132.1528114215897; Mon, 04 Jun 2018 05:10:15 -0700 (PDT) Received: from mkPC.semihalf.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id g23-v6sm3817415lfi.49.2018.06.04.05.10.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Jun 2018 05:10:15 -0700 (PDT) From: Michal Krawczyk To: Marcin Wojtas , Michal Krawczyk , Guy Tzalik , Evgeny Schemeilin Cc: dev@dpdk.org, matua@amazon.com, Rafal Kozik Date: Mon, 4 Jun 2018 14:09:50 +0200 Message-Id: <20180604120955.17319-13-mk@semihalf.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180604120955.17319-1-mk@semihalf.com> References: <20180604120955.17319-1-mk@semihalf.com> Subject: [dpdk-dev] [PATCH v2 22/26] net/ena: check pointer before memset X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Rafal Kozik Need to check if memory allocation succeed before using it. Using memset on NULL pointer cause segfault. Fixes: 9ba7981ec992 ("ena: add communication layer for DPDK") Signed-off-by: Rafal Kozik Acked-by: Michal Krawczyk --- drivers/net/ena/base/ena_plat_dpdk.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h index e2af4ee2c..d30153e92 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -210,10 +210,15 @@ extern uint32_t ena_alloc_cnt; "ena_alloc_%d", ena_alloc_cnt++); \ mz = rte_memzone_reserve(z_name, size, SOCKET_ID_ANY, \ RTE_MEMZONE_IOVA_CONTIG); \ - memset(mz->addr, 0, size); \ - virt = mz->addr; \ - phys = mz->iova; \ handle = mz; \ + if (mz == NULL) { \ + virt = NULL; \ + phys = 0; \ + } else { \ + memset(mz->addr, 0, size); \ + virt = mz->addr; \ + phys = mz->iova; \ + } \ } while (0) #define ENA_MEM_FREE_COHERENT(dmadev, size, virt, phys, handle) \ ({ ENA_TOUCH(size); ENA_TOUCH(phys); \ @@ -230,9 +235,14 @@ extern uint32_t ena_alloc_cnt; "ena_alloc_%d", ena_alloc_cnt++); \ mz = rte_memzone_reserve(z_name, size, node, \ RTE_MEMZONE_IOVA_CONTIG); \ - memset(mz->addr, 0, size); \ - virt = mz->addr; \ - phys = mz->iova; \ + if (mz == NULL) { \ + virt = NULL; \ + phys = 0; \ + } else { \ + memset(mz->addr, 0, size); \ + virt = mz->addr; \ + phys = mz->iova; \ + } \ (void)mem_handle; \ } while (0)