Skip to content

Commit

Permalink
iio: inv_mpu6050: Fix use-after-free in ACPI code
Browse files Browse the repository at this point in the history
In some cases this can result in incorrectly returning a negative value
from asus_acpi_get_sensor_info and the AK8963 magnetometer failing to
show up.

Note cpm is an alias for buffer.pointer which isn't apparent in this
patch on it's own.

Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Crestez Dan Leonard <leonard.crestez@intel.com>
Acked-by: Daniel Baluta <daniel.baluta@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
  • Loading branch information
Crestez Dan Leonard authored and Jonathan Cameron committed Jun 11, 2016
1 parent a9cc400 commit 6e85dbe
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/iio/imu/inv_mpu6050/inv_mpu_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ static int asus_acpi_get_sensor_info(struct acpi_device *adev,
int i;
acpi_status status;
union acpi_object *cpm;
int ret;

status = acpi_evaluate_object(adev->handle, "CNF0", NULL, &buffer);
if (ACPI_FAILURE(status))
Expand All @@ -82,10 +83,10 @@ static int asus_acpi_get_sensor_info(struct acpi_device *adev,
}
}
}

ret = cpm->package.count;
kfree(buffer.pointer);

return cpm->package.count;
return ret;
}

static int acpi_i2c_check_resource(struct acpi_resource *ares, void *data)
Expand Down

0 comments on commit 6e85dbe

Please sign in to comment.