Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1283cb07 authored by Karthik Jayakumar's avatar Karthik Jayakumar Committed by Gerrit - the friendly Code Review server
Browse files

msm: camera: cdm: Fix of_match table null entry



KASAN identified global-out-of-bounds issue on:
msm_cam_hw_cdm_dt_match
Due to no null-terminating struct in the array.

CRs-Fixed: 2883523
Change-Id: I36e4811f239993e1e6de158df959157217c28bfe
Signed-off-by: default avatarKarthik Jayakumar <kjayakum@codeaurora.org>
parent dc597bcd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ static const struct of_device_id msm_cam_hw_cdm_dt_match[] = {
		.compatible = CAM_HW_CDM_OPE_NAME_2_1,
		.data = &cam_cdm_2_1_reg_offset,
	},
	{},
};

static enum cam_cdm_id cam_hw_cdm_get_id_by_name(char *name)
+4 −5
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2014-2021, The Linux Foundation. All rights reserved.
 */

#include <linux/dma-mapping.h>
@@ -201,6 +201,7 @@ int camera_component_match_add_drivers(struct device *master_dev,
{
	int i, rc = 0;
	struct platform_device *pdev = NULL;
	struct device *start_dev = NULL, *match_dev = NULL;

	if (!master_dev || !match_list) {
		CAM_ERR(CAM_UTIL, "Invalid parameters for component match add");
@@ -217,14 +218,12 @@ int camera_component_match_add_drivers(struct device *master_dev,
		struct device_driver *drv = &cam_component_drivers[i]->driver;
		void *drv_ptr = (void *)drv;
#endif
		struct device *start_dev = NULL, *match_dev;

		start_dev = NULL;
		while ((match_dev = bus_find_device(&platform_bus_type,
			start_dev, drv_ptr, &camera_platform_compare_dev))) {
			put_device(start_dev);
			pdev = to_platform_device(match_dev);
			CAM_DBG(CAM_UTIL, "Adding matched component:%s",
				pdev->name);
			CAM_DBG(CAM_UTIL, "Adding matched component:%s", pdev->name);
			component_match_add(master_dev, match_list,
				camera_component_compare_dev, match_dev);
			start_dev = match_dev;