On 06/07/2018 07:57 AM, Matthew Wilcox wrote:
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++);

What does this for loop do?
Looks like nothing given the semicolon at the end.

-               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;

Reply via email to