From patchwork Sat Sep 18 10:40:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Len Baker X-Patchwork-Id: 12503787 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 778FDC433EF for ; Sat, 18 Sep 2021 10:43:58 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2F71B61212 for ; Sat, 18 Sep 2021 10:43:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2F71B61212 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=CYeDFt2oGZgnK+OHHrhXMkva9QR3MRSZtCgjE8p8dek=; b=C4yMbdXhdJkX8I tsS5oPdgWb5xxKrzTi3gm6XPDXRuD3qOJxV2gVSEw4mQa5qUxtivMBApu5g26UEgthq2XsNIulPj9 ZdGoiU8pNzxWAUzXkDa5dNsHUIfGr27uCUSTH8KIfAheEnEjFM4m/cGPQoD5/Ah+nvJhOYtzc+Bq3 jBIzWcuE4EBcFgEl5wKpYEbEG+uGHCFixD38z9ctKhU5aHEROLm3ca6Fl3ONR64lBJmncc4LGGaj+ Sb9BMkEG3P/ggWsMgyjGdf9lTbuK9XUTBw6mclcecT8X5I4NUhWZ7TjpHm4vezvWrSgXaIhEKbd3m 4BA7g0gd65Al9DmCY2HQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mRXmp-00FmHo-Ax; Sat, 18 Sep 2021 10:41:35 +0000 Received: from mout.gmx.net ([212.227.17.21]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mRXml-00FmH3-1s for linux-arm-kernel@lists.infradead.org; Sat, 18 Sep 2021 10:41:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1631961675; bh=BJyBSDq1vg3gPl9/hHfnt695lOw4ev4/ffazgBhzBCo=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=IWcS6flJU9YNVYC5w3ByxN1KoStXSdVm6i5CtSFHFdWCCgTnH7yoJfqru5xpUWXu5 qTg+2IMMYt0RYJYBmNbGJRfltyIfIp/IUxyb0yl0varXaWI3bsCLwWJHN3IE0eXuva FewU0JazI3EOavR0MDfpD/WEw3UqLvmrQAxlqQqk= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([79.150.72.99]) by mail.gmx.net (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MgvvJ-1n5rPj33NN-00hLOQ; Sat, 18 Sep 2021 12:41:14 +0200 From: Len Baker To: Daniel Mack , Haojian Zhuang , Robert Jarzmik , Vinod Koul Cc: Len Baker , "Gustavo A. R. Silva" , Kees Cook , linux-arm-kernel@lists.infradead.org, dmaengine@vger.kernel.org, linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] dmaengine: pxa_dma: Prefer struct_size over open coded arithmetic Date: Sat, 18 Sep 2021 12:40:55 +0200 Message-Id: <20210918104055.8444-1-len.baker@gmx.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Provags-ID: V03:K1:aKPT9HrV3eSSCxGAWSMTQvGr3LwrGp+4r78lkLF0wZ5cm0aCXXV BfIzMcoW1vr0AKTwLukCf06hSyzSTMz6szYRSIPD35P8rT4enLt8b2/BLW3q0WS41glkBr5 uWcmGw1zyHl/dOpiVa7rfJEfqe1J3qC95XlbpWRlc1L/nDk/fd5v2agCvzVzuumbAsQyVUm McKq8WoZ7IENYoVL3sO9Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:T7anHeQreg8=:mOX+MzsS6IIrLyXa8GTyoy r9uR+sNSkSKsUmKGYrbBiGJjcsRjkLFth7/BZkvIHtb8JJYr0+CTtB80TgMnrvcdg/T5OPS1h xnsCwADCVoWeX8/VG+jtGSBFZxrxor23gNS+voSYxtid7C9u5lrZ+ujxWKABSXMdjBIl2NdmW bY9uyVl5wvdoXOJHyXZPz4ivGWWxKshJ0Ctd/7tPjL2E+RcKc9otm1wAO1Emv3DqUFuKmsM/f hYCUyqAqYCDWbhPpjVQYTED4ZZk+qLWAiHjwZJlNM8enxK3H6+X3R5cH3ClupkT9Hwb8Z9sL3 qD55ABaLvqqNc2BpDncYTNPNItdMRJHhQc3YxLLdoIkUOqF8+qiON0XwPnklgR3noVOcV4/i+ o21Fs8QbNyW2HTM5fXfJfhIqrwd3YjQTW4VVQq8COIssSAtdz1uXi09H8cfdsXCwnka0wqKyq 92LHoVbpOguxcFDTEgYl88SsZ9M6wAjbDl0JMm+oXZyrZws/RmtF2Pk/LTvnCwoRM5q5zV/7b rbB/N1s3ngVnvb7P1u4gArr/CtOUkMnWjYvzHSG0UTS7PXPuUGGZtR44jr936cH5ct1GO3wOQ mHqdgclGgCFuflhDgpdr3Mon8xPfAd1GUj4m64xmaJ7enSldZmMhraQhxuGNG1bhzGbEDHdkY 792qzcFZCyt/af+4+WVUrycpKDfHAlblzdjowPPvysO4Z5lXJWatopbRn2BUoolr1Yt8XeJmZ BbSOFmPtjYMaKDpRBFd6wXxqk7BFLQuCB6lZPKlGYPI1MT23T7Q4DLGI+hpRnZl13Kf0r+CGE 2Myx7EA2O8a0yd2LMh3lLKLFzongDWFEIujeHLmGMPOC/+MHtPt+hdl/lKczhwPWyQn/uFP1O 3WGnvpbs0u3geBJV9mfQ+P2FU/zq7F9wvG72dZeJNYQihTYdrsqIs1u1WuGwpMZlkx06xQuit dtTSDAlWH/jJVwIllBevHz1DPjPebW7T+FmnQWu8SRxzbAMscnmWFLt5MPSBDFpDCaLg9A17O pqFb53rnfwYRDgnsZKTEg4nNymuZK+R/MWIgZyImTyK7WFTsLtfGBSy/mCLrZiXdxD43RBmu4 mO080zyroYDgp8= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210918_034131_437925_0EDC145F X-CRM114-Status: GOOD ( 10.18 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org As noted in the "Deprecated Interfaces, Language Features, Attributes, and Conventions" documentation [1], size calculations (especially multiplication) should not be performed in memory allocator (or similar) function arguments due to the risk of them overflowing. This could lead to values wrapping around and a smaller allocation being made than the caller was expecting. Using those allocations could lead to linear overflows of heap memory and other misbehaviors. So, use the struct_size() helper to do the arithmetic instead of the argument "size + count * size" in the kzalloc() function. [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments Signed-off-by: Len Baker Reviewed-by: Gustavo A. R. Silva --- drivers/dma/pxa_dma.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- 2.25.1 diff --git a/drivers/dma/pxa_dma.c b/drivers/dma/pxa_dma.c index 4a2a796e348c..52d04641e361 100644 --- a/drivers/dma/pxa_dma.c +++ b/drivers/dma/pxa_dma.c @@ -742,8 +742,7 @@ pxad_alloc_desc(struct pxad_chan *chan, unsigned int nb_hw_desc) dma_addr_t dma; int i; - sw_desc = kzalloc(sizeof(*sw_desc) + - nb_hw_desc * sizeof(struct pxad_desc_hw *), + sw_desc = kzalloc(struct_size(sw_desc, hw_desc, nb_hw_desc), GFP_NOWAIT); if (!sw_desc) return NULL;