Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1006150pxb; Wed, 1 Sep 2021 15:06:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx6g1UGSQxD4ja8BAsAWdafmKydjwpRGsk/S05mF5tkbUnTsEucMFg3CSkMr0UgQgr38vaH X-Received: by 2002:a92:4b01:: with SMTP id m1mr1138873ilg.50.1630533979261; Wed, 01 Sep 2021 15:06:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630533979; cv=none; d=google.com; s=arc-20160816; b=jpxr9Ruufm84wwA546+zg6LdoRtk8D0NRr748dQWJPwjXMcaj31CEZbFR703/8URGt 0SmaQtVNaQLsRRZOh8jQedugQGorC5vv8Uz1EYAgYU8KQVNl//QynDOkBLiPuchC77io q50fXf69g+z+Q+DKZqXjC+d8hc1PFa8sa01avaWV0MKVo2dRDTdpjCXqeah7pFNfm7hf VjyeEe0wOrHcTGiZpgqn6964rIvAjH7Ix+1oI9pEWBJbamtOxXLF0Gd6clwwR3Qc0CAR FheEj+FIHlIMdkBFRKrzHek4DCGr9pIKcwY68f724llBwqiyQkYYx/HjpbSbG0fonzNS ZTIg== 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=IZw7OKnKH/izV7YcGyZKSd2gCEzfYXeTPd/KauhQ9Io=; b=j0Ij1q7YtHLHSzkK3D0jCmtTDgENTmBMDC4UfXkpm/jlO/smmijm3injkhlZTe8fOF 8j6Fh5COtLhCt6SsJXTd1dCD21k3AG9KfYUdIgE09GeiT7to2UEDPeML1rG0+PQYHmz2 21r6Lz/5uamhPBmrFlH97LE1/2bEBDVbbrW2q5zDiMjmKsGLT+n1iBE+qEo058CY4H2X 4YIe8u4iKVg21IvP4i8o6HXTI8nFJvuwXpggJL3GYqdDD3J0j5xFL5YVPKAYfe8tbU1X Pn3frhS0m0fKb5013xlnvDPDVzfd2eSp61dHcfk9Hoz0VDXO+ZKgGqiV9H+oI4ODm96/ hZiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ZRLuIC0L; 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 6si27218ilx.104.2021.09.01.15.06.07; Wed, 01 Sep 2021 15:06:19 -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=ZRLuIC0L; 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 S1345664AbhIAMs2 (ORCPT + 99 others); Wed, 1 Sep 2021 08:48:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:48328 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345633AbhIAMow (ORCPT ); Wed, 1 Sep 2021 08:44:52 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id CFAB461152; Wed, 1 Sep 2021 12:38:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1630499927; bh=GUlel7U2taPP8HHreNxMPsRKeXvAGeJk+74as13K/00=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZRLuIC0LKD7AjoFiv8VpaDcquE8o+PsJYoi2Ef1aEqk0cFltSUhz6aYb7IDH4yIQM LR4adjjMxUHahnm0axtnEkBdwqME8SIJvBlc8gCa9Fu1ofbzeP1MF8QrtISFe6VIk3 b90gRSzkCiWiyxP2hqUTWLOmjfscC76TymJy6DGE= 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 5.13 038/113] IB/hfi1: Fix possible null-pointer dereference in _extend_sdma_tx_descs() Date: Wed, 1 Sep 2021 14:27:53 +0200 Message-Id: <20210901122303.257265886@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210901122301.984263453@linuxfoundation.org> References: <20210901122301.984263453@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 1fcc6e9666e0..8e902b83ce26 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