Skip to content

Commit

Permalink
perf/x86/intel/uncore: Clean up error handling path of iio mapping
Browse files Browse the repository at this point in the history
The error handling path of iio mapping looks fragile. We already fixed
one issue caused by it, commit f797f05 ("perf/x86/intel/uncore:
Fix for iio mapping on Skylake Server"). Clean up the error handling
path and make the code robust.

Reported-by: gushengxian <gushengxian@yulong.com>
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/40e66cf9-398b-20d7-ce4d-433be6e08921@linux.intel.com
  • Loading branch information
Kan Liang authored and Peter Zijlstra committed Jul 2, 2021
1 parent 87bf399 commit d4ba0b0
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions arch/x86/events/intel/uncore_snbep.c
Original file line number Diff line number Diff line change
Expand Up @@ -3789,11 +3789,11 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)
/* One more for NULL. */
attrs = kcalloc((uncore_max_dies() + 1), sizeof(*attrs), GFP_KERNEL);
if (!attrs)
goto err;
goto clear_topology;

eas = kcalloc(uncore_max_dies(), sizeof(*eas), GFP_KERNEL);
if (!eas)
goto err;
goto clear_attrs;

for (die = 0; die < uncore_max_dies(); die++) {
sprintf(buf, "die%ld", die);
Expand All @@ -3814,7 +3814,9 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)
for (; die >= 0; die--)
kfree(eas[die].attr.attr.name);
kfree(eas);
clear_attrs:
kfree(attrs);
clear_topology:
kfree(type->topology);
clear_attr_update:
type->attr_update = NULL;
Expand Down

0 comments on commit d4ba0b0

Please sign in to comment.