diff options
Diffstat (limited to 'drivers/i2c/i2c-core-smbus.c')
| -rw-r--r-- | drivers/i2c/i2c-core-smbus.c | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/drivers/i2c/i2c-core-smbus.c b/drivers/i2c/i2c-core-smbus.c index 56bb840142e3..f5c9787992e9 100644 --- a/drivers/i2c/i2c-core-smbus.c +++ b/drivers/i2c/i2c-core-smbus.c @@ -495,6 +495,13 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter *adapter, u16 addr,  			break;  		case I2C_SMBUS_BLOCK_DATA:  		case I2C_SMBUS_BLOCK_PROC_CALL: +			if (msg[1].buf[0] > I2C_SMBUS_BLOCK_MAX) { +				dev_err(&adapter->dev, +					"Invalid block size returned: %d\n", +					msg[1].buf[0]); +				status = -EPROTO; +				goto cleanup; +			}  			for (i = 0; i < msg[1].buf[0] + 1; i++)  				data->block[i] = msg[1].buf[i];  			break; |