platform/x86: i2c-multi-instantiate: Use struct_size() helper
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 25 Jul 2019 19:05:50 +0000 (22:05 +0300)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 30 Jul 2019 11:12:51 +0000 (14:12 +0300)
One of the more common cases of allocation size calculations is finding
the size of a structure that has a zero-sized array at the end, along
with memory for some number of elements for that array.

Make use of the struct_size() helper instead of an open-coded version
in order to avoid any potential type mistakes.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/i2c-multi-instantiate.c

index 197d8a192721e467347961946687ad87dd8c86fd..61fe341a85aa1f8dcbbb2195c98a9537db16d4c5 100644 (file)
@@ -81,9 +81,7 @@ static int i2c_multi_inst_probe(struct platform_device *pdev)
        if (ret < 0)
                return ret;
 
-       multi = devm_kmalloc(dev,
-                       offsetof(struct i2c_multi_inst_data, clients[ret]),
-                       GFP_KERNEL);
+       multi = devm_kmalloc(dev, struct_size(multi, clients, ret), GFP_KERNEL);
        if (!multi)
                return -ENOMEM;