Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp987330pxj; Wed, 2 Jun 2021 17:18:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw7Py2/If0wYdIJ+RvCgBSFhfghY0GJtewcr3jMu/ZNJ535Wi6bquYjjtV+AuFejC8QUU54 X-Received: by 2002:a17:906:f88b:: with SMTP id lg11mr22982699ejb.99.1622679508699; Wed, 02 Jun 2021 17:18:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622679508; cv=none; d=google.com; s=arc-20160816; b=xGYOIoo+q41Y/L50R9nX/u/WHxKqP/FH+De5czwIWWQ5sdgaKpwyLQDnDCypaNDjC5 FNifuSO+RZOLn3/jYr/G1eyvncriPVoJeAr9WIVkvoOHoa9OtcWH0j8cycIFiCrFKzA7 uvVycmU/OBQnyETLeYSm4jsfiT8A6TSPgQ0H1onDryzBcRK4umdZt/JXU+u+XYtjIl1x AxE+KY6FC3cy9H0T4Ogm8g+VkyQgJmCeHaBLz6MOvqHSPuOQ3rcxmbNop6/KbLYoe2Io tPE4L213Qv39immT4YYEBFtQCP14e++eqEJ3zHFu9kpIFNrtm/SVXhJoepX7axgw5Xmo yEeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date:dkim-signature; bh=SzQ9VD+2dmj5PZfCXhV6fyBmWPqFqTQAxDBTIvOPWFA=; b=ayetvjY8IiK839I10djuIvwibefX9SnlgJaJHmZ0v1Qgtso5jgj30sYqmAAnBNtGU6 l4i2EehJFDrsR79SMM8mpyf4kn1E4NmKomveTpSq8auWOYYlONyiojYpmmdUmNnoFqLi K7/+Eg4y/UtFwwZecg4FiWDeqtwJsgVsCdgKaRy+Npo4fxsW1adoy6Cgykob/6dSUSCp JrzOuZwRoyg9Qmhk0DtfjWGoulNfCHpmrNOEkM3iO9tr1EYvYjJtGHG1U3h4Pn/CVwS5 DneHA67ArqsD131eO9fVcBJ4jWpzFKGpKuzK9vr96HQF5/qm4t9BK8PxeXCFW6Ikvhm5 q4TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=uu9+1ZBQ; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p16si1033779ejn.173.2021.06.02.17.18.05; Wed, 02 Jun 2021 17:18:28 -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=@kernel.org header.s=k20201202 header.b=uu9+1ZBQ; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229657AbhFCARo (ORCPT + 99 others); Wed, 2 Jun 2021 20:17:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:50366 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229541AbhFCARo (ORCPT ); Wed, 2 Jun 2021 20:17:44 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D65AA6100A; Thu, 3 Jun 2021 00:15:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1622679360; bh=yEdkcwuAhilPBcLbUWO28NG4GTX7d4iKHu4aVHEwMBE=; h=Date:From:To:Cc:Subject:From; b=uu9+1ZBQo/EZmWv5FGp1qdyQb2TwPdVMUd8Gai0Lzd076/EBqKLci9m3hKubk0xuE uS3cEkN6UgTpNA4mA1QTke4r2EIl6gRgDkchsERpkEbZvPhr0mcrMm7dTuxX80mjAm SeAybvHtyu1siOVw/IWuhYVEOjBS4YLV9oPxB6IPRaIj533yA1Z/gditQfHWpFqWzw r7W8o/40j7TpPH8K8udH4G+lIX+kPDg3E6gWFuwe6rhylHRPH/TD1t24shUYbmUanD li7WTp24O6Qogx8sgCREjrM47vfsDsOW3sZi5YSLLh6ddChslNiy1TUmgCEMaHPh9N gKnazDIguyOQQ== Date: Wed, 2 Jun 2021 19:17:08 -0500 From: "Gustavo A. R. Silva" To: Stanimir Varbanov , Andy Gross , Bjorn Andersson , Mauro Carvalho Chehab , "Gustavo A. R. Silva" Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" , linux-hardening@vger.kernel.org, Kees Cook Subject: [PATCH v3][venus-for-next-v5.14] media: venus: hfi_cmds: Fix packet size calculation Message-ID: <20210603001708.GA55239@embeddedor> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that a one-element array was replaced with a flexible-array member in struct hfi_sys_set_property_pkt, use the struct_size() helper to correctly calculate the packet size. Fixes: 701e10b3fd9f ("media: venus: hfi_cmds.h: Replace one-element array with flexible-array member") Signed-off-by: Gustavo A. R. Silva --- Changes in v3: - Fix size calculation in call to struct_size(). Link: https://lore.kernel.org/linux-hardening/202106021254.39A1561075@keescook/ Link: https://lore.kernel.org/linux-hardening/113fd896-464c-6aef-215a-a53ac6103a62@embeddedor.com/ Changes in v2: - Include linux/overflow.h for struct_size(). drivers/media/platform/qcom/venus/hfi_cmds.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/venus/hfi_cmds.c b/drivers/media/platform/qcom/venus/hfi_cmds.c index 4b9dea7f6940..f51024786991 100644 --- a/drivers/media/platform/qcom/venus/hfi_cmds.c +++ b/drivers/media/platform/qcom/venus/hfi_cmds.c @@ -3,6 +3,7 @@ * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. * Copyright (C) 2017 Linaro Ltd. */ +#include #include #include @@ -27,7 +28,7 @@ void pkt_sys_idle_indicator(struct hfi_sys_set_property_pkt *pkt, u32 enable) { struct hfi_enable *hfi = (struct hfi_enable *)&pkt->data[1]; - pkt->hdr.size = sizeof(*pkt) + sizeof(*hfi) + sizeof(u32); + pkt->hdr.size = struct_size(pkt, data, 1) + sizeof(*hfi); pkt->hdr.pkt_type = HFI_CMD_SYS_SET_PROPERTY; pkt->num_properties = 1; pkt->data[0] = HFI_PROPERTY_SYS_IDLE_INDICATOR; @@ -39,7 +40,7 @@ void pkt_sys_debug_config(struct hfi_sys_set_property_pkt *pkt, u32 mode, { struct hfi_debug_config *hfi; - pkt->hdr.size = sizeof(*pkt) + sizeof(*hfi) + sizeof(u32); + pkt->hdr.size = struct_size(pkt, data, 1) + sizeof(*hfi); pkt->hdr.pkt_type = HFI_CMD_SYS_SET_PROPERTY; pkt->num_properties = 1; pkt->data[0] = HFI_PROPERTY_SYS_DEBUG_CONFIG; @@ -50,7 +51,7 @@ void pkt_sys_debug_config(struct hfi_sys_set_property_pkt *pkt, u32 mode, void pkt_sys_coverage_config(struct hfi_sys_set_property_pkt *pkt, u32 mode) { - pkt->hdr.size = sizeof(*pkt) + sizeof(u32); + pkt->hdr.size = struct_size(pkt, data, 2); pkt->hdr.pkt_type = HFI_CMD_SYS_SET_PROPERTY; pkt->num_properties = 1; pkt->data[0] = HFI_PROPERTY_SYS_CONFIG_COVERAGE; @@ -116,7 +117,7 @@ void pkt_sys_power_control(struct hfi_sys_set_property_pkt *pkt, u32 enable) { struct hfi_enable *hfi = (struct hfi_enable *)&pkt->data[1]; - pkt->hdr.size = sizeof(*pkt) + sizeof(*hfi) + sizeof(u32); + pkt->hdr.size = struct_size(pkt, data, 1) + sizeof(*hfi); pkt->hdr.pkt_type = HFI_CMD_SYS_SET_PROPERTY; pkt->num_properties = 1; pkt->data[0] = HFI_PROPERTY_SYS_CODEC_POWER_PLANE_CTRL; -- 2.27.0