From patchwork Fri Mar 28 06:30:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ming Qian(OSS)" X-Patchwork-Id: 14031699 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E1D7AC28B20 for ; Fri, 28 Mar 2025 06:35:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To: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:List-Owner; bh=ojkWQJ5X3HPMUyMZDEEsnr+YzJ6HkUcFlGDrNN7QZq4=; b=RaHYdT2ztfZxHAQXr+LCiqjo+c V3HVT6yUO6tNaijw0hQ9wG1oNfFxdxCGqAcWv8xIXUEU9F6KFuFdKqBRoyifZgkLvb8oWD7ZQtRGX 4swoqJ5NI5OzUzibf9/2yrnt3jg7D9T2rcPDkwSqcnRHCN1d58PK17SlKd4k191t/OVrh43Rbw4uN ZQV2VLSPOIeKOzI9Y064h6TyN4GfWX0t3s7Mmi7vo1Go/YOS/b0CYsJZK0RGtaTMPIbvZpzLcCdGW Yc6bMhXj7ArgmBeizKaamw6AviyOK+/LbY2/BK9AGkR3mO+yQ8KMBjr1EqkHojbrcfyo4aJae/Wgs 70ALfVsg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3JX-0000000CjiG-3OsZ; Fri, 28 Mar 2025 06:35:35 +0000 Received: from mail-db5eur02on20607.outbound.protection.outlook.com ([2a01:111:f403:2608::607] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3G7-0000000CjGg-3a19 for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 06:32:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z9db3teUr+0U2WsjXxfACdIqD3Y5oD9c0bd0Kv+y5XGsMozEv1pnRtnFRKBZMCIFN+F4ADWsxjZ+X/lrV4onw5dR8c1FQoWnX2B1WwLvOsNXwHhS3GgQyB8PCU0KQHs3oIq2p/B0gkQBkiAf1Z/o43ZzwKBBTKStNJvGrhG9078RYxS1wj4G7Y3m7JZtIrV/JjUxOrHJq1dox36/FQTLN+L8O/AdgtS7RlqYrGCuMp/CgT2QSP2tDq0zYOJlE0koJNoo4erLfUUKQwodiP/WgYlgG8VB3u/ZEi7PZLwIVALekrjl/CA/Kuf39nH03m8ai+rClbuc2BigbTR+J1qDRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ojkWQJ5X3HPMUyMZDEEsnr+YzJ6HkUcFlGDrNN7QZq4=; b=BEohbrReTEXsqtgRBGsiOD/pVIuNSGcJu0aJitMPs5l6EMhw2gspWbSPKVOkk+UmhMRwuFxGXlzOgdHsrcJKY+oXb1xVzc7YZmumdYmcKpIZjVULZvOPiaWehR9CVOn+WhiRtYezs6p7CqQf6w5NMkd6l1eJ25NGntM45fahGpYMDjf8phErUT/o6A/jHAxEgkvXdbG5Kr788z9A25PqvieMOLaGY6CmAOhrZnJ419g521qwTjLSTm+UFp22QdHXRi+x2hpiPHhY9S1nUzA+SA+Q3+khy2Ufg6ODqfXzEH+p0Ts2wihtyAhR3svr8l/gFpXn6gIEDgJ//jRke20gJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ojkWQJ5X3HPMUyMZDEEsnr+YzJ6HkUcFlGDrNN7QZq4=; b=juB5P9ctW/DgGodKek2cqmkMbvb/QAftEUia9SHRq46KN/rB0lPvVmrI9BxYrZjYluOdG/O1oGf4YA86L0Olusfz/Bo816sQcxOQasUdRVkR5nBa/JfXuJD0HDYEotXTfJRrxWO+1Tpy9nV0ksOpm/GYpoA9dC//2PTKFEZ4/RN1yf0x2dHkjpdBcj4rdfRzIkCknIIMN4jXuFjs2DXjvqKvHhNjhFE0k7keb5kENWIk1IT6Qx7RJmbrpoJzFIox1TfoU1ngCPJQZHHLRxcABFve93fT4hkRJigZu9pLxmbKIStAe/cr9ORw5WicRyXmQz9j9ffTKBpfnGulrxE6Xg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) by GV1PR04MB9117.eurprd04.prod.outlook.com (2603:10a6:150:24::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.48; Fri, 28 Mar 2025 06:31:57 +0000 Received: from PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87]) by PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87%4]) with mapi id 15.20.8534.043; Fri, 28 Mar 2025 06:31:57 +0000 From: ming.qian@oss.nxp.com To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, mirela.rabulea@oss.nxp.com Cc: shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, xiahong.bao@nxp.com, eagle.zhou@nxp.com, linux-imx@nxp.com, imx@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 1/3] media: imx-jpeg: Enhance error handling in buffer allocation Date: Fri, 28 Mar 2025 14:30:50 +0800 Message-ID: <20250328063056.762-2-ming.qian@oss.nxp.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250328063056.762-1-ming.qian@oss.nxp.com> References: <20250328063056.762-1-ming.qian@oss.nxp.com> X-ClientProxiedBy: SI2PR01CA0051.apcprd01.prod.exchangelabs.com (2603:1096:4:193::6) To PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8254:EE_|GV1PR04MB9117:EE_ X-MS-Office365-Filtering-Correlation-Id: 05780784-5520-47b9-87d7-08dd6dc23d37 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: uBCi2TZO4Wm9eUP3Vx5kePaHX+0C5BzJcM9QOguUC6p7iqHzk4QWrFDWwtI5QbKyq4T7Y4FEgb5kZ5HQi8d8nSkEtruNOM4tqoYUD3JvlVqMhkNFltXMjWPpbqHLvBJBDsp/o6Os4ge3gXU/kNEmnBljx4kCtXmFS07nQZtz6i8bVGtxRXScwmddbDlGxv6LKFzfRymHX8jNRkun74kymFC/Mb4IqmH8VXWsjoV+qWwsLgsVuDRI+yMVAsaImiLzG/BHLVClu93gup+WT1sB+bASOesUIcnBESSZtc/QAoZ3nPS3wVIMCKwmgYoGoUtGOqaxtXdeMsJPi5NoIJqtCZ8Dpo8lwEGSvS1dVy/VJB3oihlUaUI1fnb5yr6m1BlXRsXkru1nEd8Om//12aMyeq4jW7ct8pazvQgZywiTWyVJVeCVt68NCSWAuyuSD7I925YM9xQoK8Q8jlU5TiYmTvE8JnQpl13Agk2UvhjJKJHPj7QniJO1ejgo97OR5awJWBp4TK7GjiJjsiMsglHJl3OOWF5lUKnXJ0f6c0EXrsOVxwo8TmfhqGChQCvllgHHDlektHQQoXmIUSDxrKfl71jmAt2lk6AUgt2oxxrvYGfG40U+tkZZke65cmSnIUwusG5at+RclX5uJ0cyy/EzEmo4OBSkvcNuC6TN4qQD9fA5R6WkxKLepBfAebPQnk7plt6x+jpcnN6Ylqx2320b8n3HiLTyvRVfLnrHbjR3PncOO+XHAPqpJ7fZaJMbjw3pLr5RJaqLW+KT4Rg5049XP+LAPJ1Ooz1A9x6gn+Lq15LL5wYuqOnmlBSugIEDnIT1sgT0VrkJb9YVmFr9HCT4mJvV4VDjaz0XS49wTKLITWfsyU+b7dlifjj0xMPAW833vSJ0FchVslLHjDcSk+CXmzkuPX2EScMsfxWMefW3gQuFDK8bkRQ49WBhmCsGQqMjjUWX6hF61lomqY6aiPWoV2EyiS7Zm6QupHq5Ey0Buv12jPAYDdKfTUUXKgg0CwyHC31gA8qkreJ68S8bxveFZBmuiERxy4O/2v/4zFKvrG/YtQ5bST18pLdlfQeuN8idLelWDgP5EMf3zKXdHVQdmW8WTIDYDZOZgfOdIYazQ/oIz4bkd6QvyYdT9azUUuZ8yLzcy35NqSa7Aq0TarxcyqOVCWn9+ZPpa7ZGcp0Wi0QxSqeRI/OhLhzoXZuthd/mmzPQ+zvLB4E6HgoFqpOB5Z1kNNAaD25EW3pPev8w28T66T/uTA9ykCKov1aeYGScLC5bUAsiBDj1muhcSAnmLq94yi9Jzp9UH7OzXJI5WscUQ1pA1HOYK+85mlm4TH5SxkmaBmxLjdnf0FqenlgYeChG/xM9YZ8FPtjyuBwc3MHI0VW0gnR1tSCPcy0iLXebnMG46/Z1Jii7lfghBiUYbxcSdz9iwbExr1DhbG/bzcOZkv8ZTqt7Hm/V7kYmFyFi X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8254.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Z/H+AG4nS+muAESPsD4UrDwx8hGzay7fNr09qHK4q39XgUD8bHX5jaw3IYnhtEUNDKk5Xz2zrDKuYmQ0IzWd88EFFeCrCum1gncx+P0FoikX4AxFQL/eK+LBiRUt2LbrrA3jozCsLpj5O6BAg5g99UB6+5AEF9PCzABHZzI1uvlXR47whacGI/5dw4hwWhaMj31nUoLoOxgOcOl2iZ8wrh304L/emGVNS7FbZojaPCc9hDYnQxC9vx3Fxw9RccwCsXDNY43aUOSDrDLSf6hwDfIR10uSEOg+Q7fH2TJNlR6pqFUKt/11jSR3dWObPlfkR3rhU1A2viFhJ4YCW5hMJdC+h55vRftn5TOVfJ/eUwKPSA8HAaVbdHdHxZXBbwvljF/g3UFOl492x1uuhJY0tF24JQ5OHl6vNW0/Vzo3ilKyZ1NTSX6zq/arctr/rCChRApEOcFxUxVrAHGyPsV3lsxJH7Xh4LY7rZq939+T3itnDtC9WiggsK/ZV/5RapB4oLaDgd9IwouVHmwWw5jzeEWUFlNcU2IoCMDx+wrQQ8mgehzHJjzRGij3inP8HMaA/4AE7TzbFXD3lZrf2bhmP5anVTxYlkpgnWLaDmniEa9brKx1CFRmNAeAPJZ3fYN/XX4qiteK54jFtPbfOnHvkhfsD8B+hEao+TqwQyMnsNvUO7ddocOeqbXDhCuGfFBxdV5fw66JZu77V33fgSWWsIpCNxJU/oY2LPum9dKJih0iSIbArTQ4TveGzRvEnso5H12dcpoIyMSxhVAtcrYfO1+41ZdNSkx26jqLosbzaSIvF7tGDP6VmUUFK2mgM/RyW+z8dBskEhKb6LX07k6/gb879XHeS5x7FoCqgeaf27aLOaHkIIGNAbTChmsp0rZF6NwR8WfPgEe9c8knCPSiah4WKa3sFXiML8ik+8KKS/TBNOD8kVPipl1nnONdIy9ZicyOWhd2PDz4jxsiWKJcuINajgaaxS+AsmjBzK20PkbqToo5BU78AgFEJ+0nTumuWBJD4C5UGT0d/vqjZ2qendO1Fn0k1rU4R24vIxfvKAihCeaKOkqWcr4iejgYrJAd1Oi6H/it9svzJAmdgt8ZVGHT5owinW9FwlH9mLo1As6dhzbl/dtuabWfpcQTNhy/TwWqJ1jTlOaVxnw5YOVZL9lisujyz8IJAAQmlFJBiYWSAyrHPhZ2/tNtKNbTqagbCfQYGtPJ6yVEGxWURNG4MTfaoVRZCzcbEeLkqh7jek4U1WP2vO/H1PKCheag9K8g0O8RfPJEQaBGfIcApnMCBKkoBnatjyqLCGZMMzeAgvN9JtvVecIm8pMYlBKUlJ/T4u4eLOf3st9beDeGh0BE43NiOK6gEzAsNi8hAE4t228T50AhrIh16AGZYJO+7ZNAZNUoX1roMlfJFgicNq6z+NpgAxa4KK3Fd92Y4+W4SZMH8b4y+34pU5yRP5w8H4ncBxkhHPEsC8CjH/u5IWzfUFxL+Z6OXfmpb3nNgI9xxQHQWEqbaPq90Db+ZZIFtnz0TdOgGEo3DZjjbtesZHduHTOM+ft+32Dsl6VbOx0PnNzCESgMPvjhE4cssxBUupbE X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05780784-5520-47b9-87d7-08dd6dc23d37 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8254.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2025 06:31:57.8229 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QJv/1gY9DjQmGhZ0WzfC+zh9la6Ez8S62Eem20yM+dUc/Kc2YeE9oFyrurEBYujRgzGx3dqM3l/KzRGNGSVvQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9117 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250327_233203_885768_5C31EEE2 X-CRM114-Status: GOOD ( 12.26 ) 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 From: Ming Qian In function mxc_jpeg_alloc_slot_data, driver will allocate some dma buffer, but only return error if certain allocation failed. Without cleanup the allocation failure, the next time it will return success directly, but let some buffer be uninitialized. It may result in accessing a null pointer. Clean up if error occurs in the allocation. Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder") Signed-off-by: Ming Qian Reviewed-by: Frank Li --- v2 - Add the Fixes tag .../media/platform/nxp/imx-jpeg/mxc-jpeg.c | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index 0e6ee997284b..12661c177f5a 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -752,6 +752,32 @@ static int mxc_get_free_slot(struct mxc_jpeg_slot_data *slot_data) return -1; } +static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) +{ + /* free descriptor for decoding/encoding phase */ + dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), + jpeg->slot_data.desc, + jpeg->slot_data.desc_handle); + jpeg->slot_data.desc = NULL; + jpeg->slot_data.desc_handle = 0; + + /* free descriptor for encoder configuration phase / decoder DHT */ + dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), + jpeg->slot_data.cfg_desc, + jpeg->slot_data.cfg_desc_handle); + jpeg->slot_data.cfg_desc_handle = 0; + jpeg->slot_data.cfg_desc = NULL; + + /* free configuration stream */ + dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, + jpeg->slot_data.cfg_stream_vaddr, + jpeg->slot_data.cfg_stream_handle); + jpeg->slot_data.cfg_stream_vaddr = NULL; + jpeg->slot_data.cfg_stream_handle = 0; + + jpeg->slot_data.used = false; +} + static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) { struct mxc_jpeg_desc *desc; @@ -794,30 +820,11 @@ static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) return true; err: dev_err(jpeg->dev, "Could not allocate descriptors for slot %d", jpeg->slot_data.slot); + mxc_jpeg_free_slot_data(jpeg); return false; } -static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) -{ - /* free descriptor for decoding/encoding phase */ - dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), - jpeg->slot_data.desc, - jpeg->slot_data.desc_handle); - - /* free descriptor for encoder configuration phase / decoder DHT */ - dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), - jpeg->slot_data.cfg_desc, - jpeg->slot_data.cfg_desc_handle); - - /* free configuration stream */ - dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, - jpeg->slot_data.cfg_stream_vaddr, - jpeg->slot_data.cfg_stream_handle); - - jpeg->slot_data.used = false; -} - static void mxc_jpeg_check_and_set_last_buffer(struct mxc_jpeg_ctx *ctx, struct vb2_v4l2_buffer *src_buf, struct vb2_v4l2_buffer *dst_buf)