[PATCHv7 08/11] i2c: match vendorless strings on the internal string length

From: Kieran Bingham
Date: Mon Nov 07 2016 - 07:48:34 EST


If a user provides a shortened string to match a device to the sysfs i2c
interface it will match on the first string that contains that string
prefix.

for example:
echo a 0x68 > /sys/bus/i2c/devices/i2c-2/new_device
will match as3711, as3722, and ak8975 incorrectly.

Correct this by using sysfs_streq to match the string exactly

Signed-off-by: Kieran Bingham <kieran@xxxxxxxxxxx>

---
Changes from v7
- strncasecmp usage converted to sysfs_streq

drivers/i2c/i2c-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index c338c8f3b3db..8b93a262e237 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1810,7 +1810,7 @@ i2c_of_match_device_sysfs(const struct of_device_id *matches,
else
name++;

- if (!strncasecmp(client->name, name, strlen(client->name)))
+ if (sysfs_streq(client->name, name))
return matches;
}

--
2.7.4