device property: Fix the length used in PROPERTY_ENTRY_STRING()
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Wed, 23 Jan 2019 14:44:16 +0000 (17:44 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Mar 2019 12:19:50 +0000 (13:19 +0100)
commit 2b6e492467c78183bb629bb0a100ea3509b615a5 upstream.

With string type property entries we need to use
sizeof(const char *) instead of the number of characters as
the length of the entry.

If the string was shorter then sizeof(const char *),
attempts to read it would have failed with -EOVERFLOW. The
problem has been hidden because all build-in string
properties have had a string longer then 8 characters until
now.

Fixes: a85f42047533 ("device property: helper macros for property entry creation")
Cc: 4.5+ <stable@vger.kernel.org> # 4.5+
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/property.h

index 459337fb44d0790aa2d80b7ff5f3f005652bb386..d5c7ebda4113095554731f49af0f4ddd003300e4 100644 (file)
@@ -233,7 +233,7 @@ struct property_entry {
 #define PROPERTY_ENTRY_STRING(_name_, _val_)           \
 (struct property_entry) {                              \
        .name = _name_,                                 \
-       .length = sizeof(_val_),                        \
+       .length = sizeof(const char *),                 \
        .is_string = true,                              \
        { .value = { .str = _val_ } },                  \
 }