From: Matthew Wilcox <[email protected]>

Need to do a bit of rearranging to make this work.

Signed-off-by: Matthew Wilcox <[email protected]>
---
 arch/x86/events/intel/uncore.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index 15b07379e72d..e15cfad4f89b 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -865,8 +865,6 @@ static void uncore_types_exit(struct intel_uncore_type 
**types)
 static int __init uncore_type_init(struct intel_uncore_type *type, bool setid)
 {
        struct intel_uncore_pmu *pmus;
-       struct attribute_group *attr_group;
-       struct attribute **attrs;
        size_t size;
        int i, j;
 
@@ -891,21 +889,24 @@ static int __init uncore_type_init(struct 
intel_uncore_type *type, bool setid)
                                0, type->num_counters, 0, 0);
 
        if (type->event_descs) {
+               struct {
+                       struct attribute_group group;
+                       struct attribute *attrs[];
+               } *attr_group;
                for (i = 0; type->event_descs[i].attr.attr.name; i++);
 
-               attr_group = kzalloc(sizeof(struct attribute *) * (i + 1) +
-                                       sizeof(*attr_group), GFP_KERNEL);
+               attr_group = kzalloc(struct_size(attr_group, attrs, i + 1),
+                                                               GFP_KERNEL);
                if (!attr_group)
                        goto err;
 
-               attrs = (struct attribute **)(attr_group + 1);
-               attr_group->name = "events";
-               attr_group->attrs = attrs;
+               attr_group->group.name = "events";
+               attr_group->group.attrs = attr_group->attrs;
 
                for (j = 0; j < i; j++)
-                       attrs[j] = &type->event_descs[j].attr.attr;
+                       attr_group->attrs[j] = &type->event_descs[j].attr.attr;
 
-               type->events_group = attr_group;
+               type->events_group = &attr_group->group;
        }
 
        type->pmu_group = &uncore_pmu_attr_group;
-- 
2.17.0

Reply via email to