Commit 4be70390 authored by Linus Torvalds's avatar Linus Torvalds

Fix generic fb_ddc i2c edid probe msg

Benh points out that the msgs[0].flags entry never got initialized, and
since it's an automatic stack allocation, it could have any random
value, which is bad.

Rewrite the initializer to explicitly initialize all fields of the small
i2c_msg structure array we generate.  Just to keep it all obvious, let's
handle msgs[1].buf in the same initializer while we're at it, instead of
initializing that one separately later.
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4f71c5de
...@@ -20,26 +20,26 @@ ...@@ -20,26 +20,26 @@
static unsigned char *fb_do_probe_ddc_edid(struct i2c_adapter *adapter) static unsigned char *fb_do_probe_ddc_edid(struct i2c_adapter *adapter)
{ {
unsigned char start = 0x0; unsigned char start = 0x0;
unsigned char *buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
struct i2c_msg msgs[] = { struct i2c_msg msgs[] = {
{ {
.addr = DDC_ADDR, .addr = DDC_ADDR,
.flags = 0,
.len = 1, .len = 1,
.buf = &start, .buf = &start,
}, { }, {
.addr = DDC_ADDR, .addr = DDC_ADDR,
.flags = I2C_M_RD, .flags = I2C_M_RD,
.len = EDID_LENGTH, .len = EDID_LENGTH,
.buf = buf,
} }
}; };
unsigned char *buf;
buf = kmalloc(EDID_LENGTH, GFP_KERNEL);
if (!buf) { if (!buf) {
dev_warn(&adapter->dev, "unable to allocate memory for EDID " dev_warn(&adapter->dev, "unable to allocate memory for EDID "
"block.\n"); "block.\n");
return NULL; return NULL;
} }
msgs[1].buf = buf;
if (i2c_transfer(adapter, msgs, 2) == 2) if (i2c_transfer(adapter, msgs, 2) == 2)
return buf; return buf;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment