Message ID | 20131019084622.GA9312@longonot.mountain |
---|---|
State | Accepted |
Headers | show |
On Sat, Oct 19, 2013 at 11:46:22AM +0300, Dan Carpenter wrote: > "obj" can't be NULL here. > > We already know that "pkg->package.elements" gives us a valid pointer > so the next pointer after that is also non-NULL. Why is that? Can't see it... > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > > diff --git a/drivers/i2c/busses/i2c-scmi.c b/drivers/i2c/busses/i2c-scmi.c > index c447e8d..5992355 100644 > --- a/drivers/i2c/busses/i2c-scmi.c > +++ b/drivers/i2c/busses/i2c-scmi.c > @@ -223,7 +223,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, > goto out; > > obj = pkg->package.elements + 1; > - if (obj == NULL || obj->type != ACPI_TYPE_INTEGER) { > + if (obj->type != ACPI_TYPE_INTEGER) { > ACPI_ERROR((AE_INFO, "Invalid argument type")); > result = -EIO; > goto out; > @@ -235,7 +235,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, > case I2C_SMBUS_BYTE: > case I2C_SMBUS_BYTE_DATA: > case I2C_SMBUS_WORD_DATA: > - if (obj == NULL || obj->type != ACPI_TYPE_INTEGER) { > + if (obj->type != ACPI_TYPE_INTEGER) { > ACPI_ERROR((AE_INFO, "Invalid argument type")); > result = -EIO; > goto out; > @@ -246,7 +246,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, > data->byte = obj->integer.value; > break; > case I2C_SMBUS_BLOCK_DATA: > - if (obj == NULL || obj->type != ACPI_TYPE_BUFFER) { > + if (obj->type != ACPI_TYPE_BUFFER) { > ACPI_ERROR((AE_INFO, "Invalid argument type")); > result = -EIO; > goto out;
On Wed, Oct 30, 2013 at 05:02:58PM +0100, Wolfram Sang wrote: > > --- a/drivers/i2c/busses/i2c-scmi.c > > +++ b/drivers/i2c/busses/i2c-scmi.c > > @@ -223,7 +223,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, > > goto out; > > > > obj = pkg->package.elements + 1; > > - if (obj == NULL || obj->type != ACPI_TYPE_INTEGER) { > > + if (obj->type != ACPI_TYPE_INTEGER) { > > ACPI_ERROR((AE_INFO, "Invalid argument type")); > > result = -EIO; > > goto out; For obj to be 0 then pkg->package.elements must be -1. If we're getting a pointer of -1 then we're already screwed. Also we already used pkg->elements without the "+ 1" so we know that's not -1. The reason for this patch was that some compilers assume pointer math can't overflow and my checker was complaining. We use -fno-strict-overflow in the kernel, but it still seemed worth cleaning. regards, dan carpenter -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Oct 19, 2013 at 11:46:22AM +0300, Dan Carpenter wrote: > "obj" can't be NULL here. > > We already know that "pkg->package.elements" gives us a valid pointer > so the next pointer after that is also non-NULL. > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Applied to for-next, thanks!
diff --git a/drivers/i2c/busses/i2c-scmi.c b/drivers/i2c/busses/i2c-scmi.c index c447e8d..5992355 100644 --- a/drivers/i2c/busses/i2c-scmi.c +++ b/drivers/i2c/busses/i2c-scmi.c @@ -223,7 +223,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, goto out; obj = pkg->package.elements + 1; - if (obj == NULL || obj->type != ACPI_TYPE_INTEGER) { + if (obj->type != ACPI_TYPE_INTEGER) { ACPI_ERROR((AE_INFO, "Invalid argument type")); result = -EIO; goto out; @@ -235,7 +235,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, case I2C_SMBUS_BYTE: case I2C_SMBUS_BYTE_DATA: case I2C_SMBUS_WORD_DATA: - if (obj == NULL || obj->type != ACPI_TYPE_INTEGER) { + if (obj->type != ACPI_TYPE_INTEGER) { ACPI_ERROR((AE_INFO, "Invalid argument type")); result = -EIO; goto out; @@ -246,7 +246,7 @@ acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, data->byte = obj->integer.value; break; case I2C_SMBUS_BLOCK_DATA: - if (obj == NULL || obj->type != ACPI_TYPE_BUFFER) { + if (obj->type != ACPI_TYPE_BUFFER) { ACPI_ERROR((AE_INFO, "Invalid argument type")); result = -EIO; goto out;
"obj" can't be NULL here. We already know that "pkg->package.elements" gives us a valid pointer so the next pointer after that is also non-NULL. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html