Re: [stable] Re: [01/11] fix amd64 2.6.11 oops on modprobe (saa7110)
* Jean Delvare ([EMAIL PROTECTED]) wrote: > Hi Greg, all, > > > > Not that I really care, but isn't there a rule that a patch "... can > > > not contain any "trivial" fixes in it (spelling changes, whitespace > > > cleanups, etc.)"? > > > > Good point. Jean, care to respin the patch? > > Sure, sorry for the trouble. Thanks, updated patch. -chris -- Linux Security Modules http://lsm.immunix.org http://lsm.bkbits.net - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [01/11] fix amd64 2.6.11 oops on modprobe (saa7110)
Hi Greg, all, > > Not that I really care, but isn't there a rule that a patch "... can > > not contain any "trivial" fixes in it (spelling changes, whitespace > > cleanups, etc.)"? > > Good point. Jean, care to respin the patch? Sure, sorry for the trouble. --- This is a rewrite of the saa7110_write_block function, which was plain broken in the case where the underlying adapter supports I2C_FUNC_I2C. It also includes related fixes which ensure that different parts of the driver agree on the number of registers the chip has. Signed-off-by: Jean Delvare <[EMAIL PROTECTED]> Signed-off-by: Chris Wright <[EMAIL PROTECTED]> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> --- linux-2.6.11/drivers/media/video/saa7110.c.orig 2005-03-03 08:01:14.0 +0100 +++ linux-2.6.11/drivers/media/video/saa7110.c 2005-03-11 10:06:09.0 +0100 @@ -60,8 +60,10 @@ #defineI2C_SAA7110 0x9C/* or 0x9E */ +#define SAA7110_NR_REG 0x35 + struct saa7110 { - unsigned char reg[54]; + u8 reg[SAA7110_NR_REG]; int norm; int input; @@ -95,31 +97,28 @@ unsigned int len) { int ret = -1; - u8 reg = *data++; + u8 reg = *data; /* first register to write to */ - len--; + /* Sanity check */ + if (reg + (len - 1) > SAA7110_NR_REG) + return ret; /* the saa7110 has an autoincrement function, use it if * the adapter understands raw I2C */ if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { struct saa7110 *decoder = i2c_get_clientdata(client); struct i2c_msg msg; - u8 block_data[54]; - msg.len = 0; - msg.buf = (char *) block_data; + msg.len = len; + msg.buf = (char *) data; msg.addr = client->addr; - msg.flags = client->flags; - while (len >= 1) { - msg.len = 0; - block_data[msg.len++] = reg; - while (len-- >= 1 && msg.len < 54) - block_data[msg.len++] = - decoder->reg[reg++] = *data++; - ret = i2c_transfer(client->adapter, &msg, 1); - } + msg.flags = 0; + ret = i2c_transfer(client->adapter, &msg, 1); + + /* Cache the written data */ + memcpy(decoder->reg + reg, data + 1, len - 1); } else { - while (len-- >= 1) { + for (++data, --len; len; len--) { if ((ret = saa7110_write(client, reg++, *data++)) < 0) break; @@ -192,7 +191,7 @@ return 0; } -static const unsigned char initseq[] = { +static const unsigned char initseq[1 + SAA7110_NR_REG] = { 0, 0x4C, 0x3C, 0x0D, 0xEF, 0xBD, 0xF2, 0x03, 0x00, /* 0x08 */ 0xF8, 0xF8, 0x60, 0x60, 0x00, 0x86, 0x18, 0x90, /* 0x10 */ 0x00, 0x59, 0x40, 0x46, 0x42, 0x1A, 0xFF, 0xDA, -- Jean Delvare - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [01/11] fix amd64 2.6.11 oops on modprobe (saa7110)
On Thu, Mar 10, 2005 at 07:37:40PM -0600, Josh Boyer wrote: > On Thu, 2005-03-10 at 15:07 -0800, Greg KH wrote: > > -stable review patch. If anyone has any objections, please let us know. > > > > -- > > > > This is a rewrite of the saa7110_write_block function, which was plain > > broken in the case where the underlying adapter supports I2C_FUNC_I2C. > > It also includes related fixes which ensure that different parts of the > > driver agree on the number of registers the chip has. > > > > Signed-off-by: Jean Delvare <[EMAIL PROTECTED]> > > Signed-off-by: Chris Wright <[EMAIL PROTECTED]> > > Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> > > > > --- linux-2.6.11-bk3/drivers/media/video/saa7110.c.orig Tue Mar 8 > > 10:27:15 2005 > > +++ linux-2.6.11-bk3/drivers/media/video/saa7110.c Tue Mar 8 12:02:45 2005 > > @@ -58,10 +58,12 @@ > > #define SAA7110_MAX_INPUT 9 /* 6 CVBS, 3 SVHS */ > > #define SAA7110_MAX_OUTPUT 0 /* its a decoder only */ > > > > -#defineI2C_SAA7110 0x9C/* or 0x9E */ > > +#define I2C_SAA71100x9C/* or 0x9E */ > > Not that I really care, but isn't there a rule that a patch "... can not > contain any "trivial" fixes in it (spelling changes, whitespace > cleanups, etc.)"? Good point. Jean, care to respin the patch? thanks, greg k-h - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [01/11] fix amd64 2.6.11 oops on modprobe (saa7110)
On Thu, 2005-03-10 at 15:07 -0800, Greg KH wrote: > -stable review patch. If anyone has any objections, please let us know. > > -- > > This is a rewrite of the saa7110_write_block function, which was plain > broken in the case where the underlying adapter supports I2C_FUNC_I2C. > It also includes related fixes which ensure that different parts of the > driver agree on the number of registers the chip has. > > Signed-off-by: Jean Delvare <[EMAIL PROTECTED]> > Signed-off-by: Chris Wright <[EMAIL PROTECTED]> > Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> > > --- linux-2.6.11-bk3/drivers/media/video/saa7110.c.orig Tue Mar 8 > 10:27:15 2005 > +++ linux-2.6.11-bk3/drivers/media/video/saa7110.cTue Mar 8 12:02:45 2005 > @@ -58,10 +58,12 @@ > #define SAA7110_MAX_INPUT9 /* 6 CVBS, 3 SVHS */ > #define SAA7110_MAX_OUTPUT 0 /* its a decoder only */ > > -#define I2C_SAA7110 0x9C/* or 0x9E */ > +#define I2C_SAA7110 0x9C/* or 0x9E */ Not that I really care, but isn't there a rule that a patch "... can not contain any "trivial" fixes in it (spelling changes, whitespace cleanups, etc.)"? josh - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[01/11] fix amd64 2.6.11 oops on modprobe (saa7110)
-stable review patch. If anyone has any objections, please let us know. -- This is a rewrite of the saa7110_write_block function, which was plain broken in the case where the underlying adapter supports I2C_FUNC_I2C. It also includes related fixes which ensure that different parts of the driver agree on the number of registers the chip has. Signed-off-by: Jean Delvare <[EMAIL PROTECTED]> Signed-off-by: Chris Wright <[EMAIL PROTECTED]> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> --- linux-2.6.11-bk3/drivers/media/video/saa7110.c.orig Tue Mar 8 10:27:15 2005 +++ linux-2.6.11-bk3/drivers/media/video/saa7110.c Tue Mar 8 12:02:45 2005 @@ -58,10 +58,12 @@ #define SAA7110_MAX_INPUT 9 /* 6 CVBS, 3 SVHS */ #define SAA7110_MAX_OUTPUT 0 /* its a decoder only */ -#defineI2C_SAA7110 0x9C/* or 0x9E */ +#define I2C_SAA71100x9C/* or 0x9E */ + +#define SAA7110_NR_REG 0x35 struct saa7110 { - unsigned char reg[54]; + u8 reg[SAA7110_NR_REG]; int norm; int input; @@ -95,31 +97,28 @@ unsigned int len) { int ret = -1; - u8 reg = *data++; + u8 reg = *data; /* first register to write to */ - len--; + /* Sanity check */ + if (reg + (len - 1) > SAA7110_NR_REG) + return ret; /* the saa7110 has an autoincrement function, use it if * the adapter understands raw I2C */ if (i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { struct saa7110 *decoder = i2c_get_clientdata(client); struct i2c_msg msg; - u8 block_data[54]; - msg.len = 0; - msg.buf = (char *) block_data; + msg.len = len; + msg.buf = (char *) data; msg.addr = client->addr; - msg.flags = client->flags; - while (len >= 1) { - msg.len = 0; - block_data[msg.len++] = reg; - while (len-- >= 1 && msg.len < 54) - block_data[msg.len++] = - decoder->reg[reg++] = *data++; - ret = i2c_transfer(client->adapter, &msg, 1); - } + msg.flags = 0; + ret = i2c_transfer(client->adapter, &msg, 1); + + /* Cache the written data */ + memcpy(decoder->reg + reg, data + 1, len - 1); } else { - while (len-- >= 1) { + for (++data, --len; len; len--) { if ((ret = saa7110_write(client, reg++, *data++)) < 0) break; @@ -192,7 +191,7 @@ return 0; } -static const unsigned char initseq[] = { +static const unsigned char initseq[1 + SAA7110_NR_REG] = { 0, 0x4C, 0x3C, 0x0D, 0xEF, 0xBD, 0xF2, 0x03, 0x00, /* 0x08 */ 0xF8, 0xF8, 0x60, 0x60, 0x00, 0x86, 0x18, 0x90, /* 0x10 */ 0x00, 0x59, 0x40, 0x46, 0x42, 0x1A, 0xFF, 0xDA, - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/