Эх сурвалжийг харах

disp: msm: dsi: add check for invalid arguments in DSI clock control

Check against the max clk_type and clk_state enumerations before
to validate the type and state of DSI clocks to avoid Control
Flow Integrity issues.

Change-Id: Id53465c2b12debb1b356c0c91064eb017c2ca30d
Signed-off-by: Satya Rama Aditya Pinapala <[email protected]>
Satya Rama Aditya Pinapala 5 жил өмнө
parent
commit
e6e39e8b94

+ 2 - 3
msm/dsi/dsi_clk.h

@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
- * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
  */
 
 #ifndef _DSI_CLK_H_
@@ -264,8 +264,7 @@ int dsi_display_link_clk_force_update_ctrl(void *handle);
  *
  * return: error code in case of failure or 0 for success.
  */
-int dsi_display_clk_ctrl(void *handle,
-	enum dsi_clk_type clk_type, enum dsi_clk_state clk_state);
+int dsi_display_clk_ctrl(void *handle, u32 clk_type, u32 clk_state);
 
 /**
  * dsi_clk_set_link_frequencies() - set frequencies for link clks

+ 4 - 3
msm/dsi/dsi_clk_manager.c

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
  */
 
 #include <linux/of.h>
@@ -1289,11 +1289,12 @@ int dsi_display_link_clk_force_update_ctrl(void *handle)
 }
 
 int dsi_display_clk_ctrl(void *handle,
-	enum dsi_clk_type clk_type, enum dsi_clk_state clk_state)
+	u32 clk_type, u32 clk_state)
 {
 	int rc = 0;
 
-	if (!handle) {
+	if ((!handle) || (clk_type > DSI_ALL_CLKS) ||
+			(clk_state > DSI_CLK_EARLY_GATE)) {
 		DSI_ERR("Invalid arg\n");
 		return -EINVAL;
 	}