Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp999289pxb; Wed, 1 Sep 2021 14:56:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxyh4XbzvaqnetRbkm9xKExd/BASQ3yP0zeP+FdrEhf6YUi8GMX20P/MCBsBIWS3X1ddHEb X-Received: by 2002:a17:906:802:: with SMTP id e2mr1756809ejd.133.1630533390050; Wed, 01 Sep 2021 14:56:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630533390; cv=none; d=google.com; s=arc-20160816; b=C1o39MvcMpMLp78GCxIyAOj45KUJX90+k6bUPgWLEJsYuWX0gOvwoRtvwry/P9V5oO k2aJU5K25Ej0DU7XxbFvlpT/AHOSA/+Ta5uQrsH5BUvfmeQLQQ+BbF8doHmN+W82RK9T ltmC69uxiJB9vRQ8bZBlKSKwgsozzYRA9CiId/ccn4Wu63wgIp/ccXJ61I4VYL+5HX8X +nLSaI+QZ8X6tvQ/UPv8ERGO4d1lm8pTkCyLZoa/QYoEmDPxo47doQZG0jyfU/V+drRq K9ssN254MFER7skG+p23Xc9E8/65ajB8Yixyx31tiJSSSfv+4DRhCanEkRTkhPyAN4bJ r08w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nB0HKn1OSLwv/AcJzX+aDgD8cZriA/G4ftAqUk7noeY=; b=Qn/YHVa6Jc/7siRJCn8LPKUsLEtgFXdxd27uWmOLMoff4SSiP0tOLZ7gDKxWOQSTtO m8iqsGeMIz39LBRAgEqPSEQnA+/stCqnIJPCMZbTjwAc4hm9KPRyusfMQV/X7DiXESJX /QiZtavQrmGNpmFg86of4F2I9/xtKmQxEtTcIXCH+BCfxwD4u2mBAAqTtz0xfw6yEn5U /hHtTqavqNA6qCtpoq1nSqCvA7HhrA07aL1bnGLh2uTpNgwuhZJBU9bvzlhOseUg5oDW oLR6CpEuRrUZbMRJdbOl5w8p4se55HcFzdMPdN0UD1dTw5Ik5dGY1ou09D0tr/tyP3Uw z/yA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=d+aVoPKq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c11si17599edt.4.2021.09.01.14.56.04; Wed, 01 Sep 2021 14:56:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=d+aVoPKq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244826AbhIAMbV (ORCPT + 99 others); Wed, 1 Sep 2021 08:31:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:60760 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244269AbhIAMam (ORCPT ); Wed, 1 Sep 2021 08:30:42 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id CFFCF6101B; Wed, 1 Sep 2021 12:29:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1630499385; bh=ZUv3joNRiauI2Q+hGrlJ7FIUTTNUnyfSy5gQnQtYWTY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d+aVoPKqyZ2Y0ZiaEQLRjzvbxyp60d5f+gzWXIhkx3tw3VVsy5NLqkuFpvH0jZAH2 Qg1NfuWKtGyTBMuj0TGCDWq1IY2e5u+g8dzJxvrbcJXUlAh82ZWl55nroGV6qxK/wK +UHc9i5BUDIDUVmOSQUEckLDzWFiiErnE1B3KY6M= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, TOTE Robot , Tuo Li , Mike Marciniszyn , Jason Gunthorpe , Sasha Levin Subject: [PATCH 4.19 13/33] IB/hfi1: Fix possible null-pointer dereference in _extend_sdma_tx_descs() Date: Wed, 1 Sep 2021 14:28:02 +0200 Message-Id: <20210901122251.214677096@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210901122250.752620302@linuxfoundation.org> References: <20210901122250.752620302@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tuo Li [ Upstream commit cbe71c61992c38f72c2b625b2ef25916b9f0d060 ] kmalloc_array() is called to allocate memory for tx->descp. If it fails, the function __sdma_txclean() is called: __sdma_txclean(dd, tx); However, in the function __sdma_txclean(), tx-descp is dereferenced if tx->num_desc is not zero: sdma_unmap_desc(dd, &tx->descp[0]); To fix this possible null-pointer dereference, assign the return value of kmalloc_array() to a local variable descp, and then assign it to tx->descp if it is not NULL. Otherwise, go to enomem. Fixes: 7724105686e7 ("IB/hfi1: add driver files") Link: https://lore.kernel.org/r/20210806133029.194964-1-islituo@gmail.com Reported-by: TOTE Robot Signed-off-by: Tuo Li Tested-by: Mike Marciniszyn Acked-by: Mike Marciniszyn Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/hw/hfi1/sdma.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c index 291c12f588b5..38258de75a94 100644 --- a/drivers/infiniband/hw/hfi1/sdma.c +++ b/drivers/infiniband/hw/hfi1/sdma.c @@ -3055,6 +3055,7 @@ static void __sdma_process_event(struct sdma_engine *sde, static int _extend_sdma_tx_descs(struct hfi1_devdata *dd, struct sdma_txreq *tx) { int i; + struct sdma_desc *descp; /* Handle last descriptor */ if (unlikely((tx->num_desc == (MAX_DESC - 1)))) { @@ -3075,12 +3076,10 @@ static int _extend_sdma_tx_descs(struct hfi1_devdata *dd, struct sdma_txreq *tx) if (unlikely(tx->num_desc == MAX_DESC)) goto enomem; - tx->descp = kmalloc_array( - MAX_DESC, - sizeof(struct sdma_desc), - GFP_ATOMIC); - if (!tx->descp) + descp = kmalloc_array(MAX_DESC, sizeof(struct sdma_desc), GFP_ATOMIC); + if (!descp) goto enomem; + tx->descp = descp; /* reserve last descriptor for coalescing */ tx->desc_limit = MAX_DESC - 1; -- 2.30.2