summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Dyer <nick.dyer@itdev.co.uk>2014-09-09 16:14:06 +0100
committerNick Dyer <nick.dyer@itdev.co.uk>2014-09-09 16:27:31 +0100
commitb96fee16f8fcdbc54cdecbac4769bc6d43f3c322 (patch)
tree1a3f565991d7acf7e502dcaa7dd057afd6ef5944
parent29c8ab9dc45ef3bc5cda7fad055121fd421e6a54 (diff)
downloadolio-linux-3.10-b96fee16f8fcdbc54cdecbac4769bc6d43f3c322.tar.xz
olio-linux-3.10-b96fee16f8fcdbc54cdecbac4769bc6d43f3c322.zip
Input: atmel_mxt_ts - add guards when sysfs interface called with no object table
Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk>
-rw-r--r--drivers/input/touchscreen/atmel_mxt_ts.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 4df1f0e7d45..4cb916cf6ed 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -2635,6 +2635,10 @@ static ssize_t mxt_fw_version_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct mxt_data *data = dev_get_drvdata(dev);
+
+ if (!data->object_table)
+ return -EINVAL;
+
return scnprintf(buf, PAGE_SIZE, "%u.%u.%02X\n",
data->info->version >> 4, data->info->version & 0xf,
data->info->build);
@@ -2645,6 +2649,10 @@ static ssize_t mxt_hw_version_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct mxt_data *data = dev_get_drvdata(dev);
+
+ if (!data->object_table)
+ return -EINVAL;
+
return scnprintf(buf, PAGE_SIZE, "%u.%u\n",
data->info->family_id, data->info->variant_id);
}
@@ -2677,6 +2685,9 @@ static ssize_t mxt_object_show(struct device *dev,
int error;
u8 *obuf;
+ if (!data->object_table)
+ return -EINVAL;
+
/* Pre-allocate buffer large enough to hold max sized object. */
obuf = kmalloc(256, GFP_KERNEL);
if (!obuf)