[RFC] Fix and invalid array indexing in isp_csi2_complexio_lanes_config

Message ID 4B4CDA40.9030102@panicking.kicks-ass.org (mailing list archive)
State RFC, archived
Headers

Commit Message

Michael Trimarchi Jan. 12, 2010, 8:23 p.m. UTC
  
  

Comments

Aguirre Rodriguez, Sergio Alberto Jan. 13, 2010, 5:33 p.m. UTC | #1
Nice catch!

Patch looks good to me.

I'm pushing it into my omap-devel branch, which I'll later rebase to latest Sakari's tree and send among other patches I have in my queue for him.

Regards,
Sergio

> -----Original Message-----
> From: Michael Trimarchi [mailto:michael@panicking.kicks-ass.org]
> Sent: Tuesday, January 12, 2010 2:23 PM
> To: Sakari Ailus; Aguirre, Sergio
> Cc: linux-media@vger.kernel.org
> Subject: [RFC PATCH] Fix and invalid array indexing in
> isp_csi2_complexio_lanes_config
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

Fix and invalid array indexing when refcfg->data[i].pos is equal to 0.
The code access an invalid location.

Signed-off-by: Michael Trimarchi <michael@panicking.kicks-ass.org>
cc: akari Ailus <sakari.ailus@maxwell.research.nokia.com>
cc: Sergio Aguirre <saaguirre@ti.com>

---
diff --git a/drivers/media/video/isp/ispcsi2.c b/drivers/media/video/isp/ispcsi2.c
index fb0f44f..cc8fa39 100644
--- a/drivers/media/video/isp/ispcsi2.c
+++ b/drivers/media/video/isp/ispcsi2.c
@@ -85,8 +85,10 @@  int isp_csi2_complexio_lanes_config(struct isp_csi2_device *isp_csi2,
 			       " parameters for data lane #%d\n", i);
 			goto err_einval;
 		}
-		if (pos_occupied[reqcfg->data[i].pos - 1] &&
-		    reqcfg->data[i].pos > 0) {
+		if (!reqcfg->data[i].pos)
+			continue;
+
+		if (pos_occupied[reqcfg->data[i].pos - 1]) {
 			printk(KERN_ERR "Lane #%d already occupied\n",
 			       reqcfg->data[i].pos);
 			goto err_einval;