From: Ethan Zhao <ethan.kernel@gmail.com>
To: hans.verkuil@cisco.com, m.chehab@samsung.com, gregkh@linuxfoundation.org
Cc: linux-kernel@vger.kernel.org, Ethan Zhao <ethan.kernel@gmail.com>
Subject: [PATCH] [media] cx18: introduce a helper function to avoid array overrun
Date: Mon, 6 Jan 2014 23:07:06 +0800 [thread overview]
Message-ID: <1389020826-807-1-git-send-email-ethan.kernel@gmail.com> (raw)
cx18_i2c_register() is called in cx18_init_subdevs() with index
greater than length of hw_bus array, that will cause array overrun,
introduce a helper cx18_get_max_bus_num() to avoid it.
V2: fix a typo and use ARRAY_SIZE macro
Signed-off-by: Ethan Zhao <ethan.kernel@gmail.com>
---
drivers/media/pci/cx18/cx18-driver.c | 2 +-
drivers/media/pci/cx18/cx18-i2c.c | 5 +++++
drivers/media/pci/cx18/cx18-i2c.h | 1 +
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/media/pci/cx18/cx18-driver.c b/drivers/media/pci/cx18/cx18-driver.c
index 6386ced..dadcd4a 100644
--- a/drivers/media/pci/cx18/cx18-driver.c
+++ b/drivers/media/pci/cx18/cx18-driver.c
@@ -856,7 +856,7 @@ static void cx18_init_subdevs(struct cx18 *cx)
u32 device;
int i;
- for (i = 0, device = 1; i < 32; i++, device <<= 1) {
+ for (i = 0, device = 1; i < cx18_get_max_bus_num(); i++, device <<= 1) {
if (!(device & hw))
continue;
diff --git a/drivers/media/pci/cx18/cx18-i2c.c b/drivers/media/pci/cx18/cx18-i2c.c
index 4af8cd6..1a7b49b 100644
--- a/drivers/media/pci/cx18/cx18-i2c.c
+++ b/drivers/media/pci/cx18/cx18-i2c.c
@@ -108,6 +108,11 @@ static int cx18_i2c_new_ir(struct cx18 *cx, struct i2c_adapter *adap, u32 hw,
-1 : 0;
}
+int cx18_get_max_bus_num(void)
+{
+ return ARRAY_SIZE(hw_bus);
+}
+
int cx18_i2c_register(struct cx18 *cx, unsigned idx)
{
struct v4l2_subdev *sd;
diff --git a/drivers/media/pci/cx18/cx18-i2c.h b/drivers/media/pci/cx18/cx18-i2c.h
index 1180fdc..6f2ceb5 100644
--- a/drivers/media/pci/cx18/cx18-i2c.h
+++ b/drivers/media/pci/cx18/cx18-i2c.h
@@ -21,6 +21,7 @@
* 02111-1307 USA
*/
+int cx18_get_max_bus_num(void);
int cx18_i2c_register(struct cx18 *cx, unsigned idx);
struct v4l2_subdev *cx18_find_hw(struct cx18 *cx, u32 hw);
--
1.8.3.4 (Apple Git-47)
next reply other threads:[~2014-01-06 15:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-06 15:07 Ethan Zhao [this message]
2014-01-10 13:06 ` [PATCH] [media] cx18: introduce a helper function to avoid array overrun Hans Verkuil
2014-01-11 14:08 ` Andy Walls
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1389020826-807-1-git-send-email-ethan.kernel@gmail.com \
--to=ethan.kernel@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hans.verkuil@cisco.com \
--cc=linux-kernel@vger.kernel.org \
--cc=m.chehab@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.