mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 13:22:57 +00:00
perf/x86/intel/uncore: Clear attr_update properly
commit6532783310
upstream. Current clear_attr_update procedure in pmu_set_mapping() sets attr_update field in NULL that is not correct because intel_uncore_type pmu types can contain several groups in attr_update field. For example, SPR platform already has uncore_alias_group to update and then UPI topology group will be added in next patches. Fix current behavior and clear attr_update group related to mapping only. Fixes:bb42b3d397
("perf/x86/intel/uncore: Expose an Uncore unit to IIO PMON mapping") Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Kan Liang <kan.liang@linux.intel.com> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20221117122833.3103580-4-alexander.antonov@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
08762dcb17
commit
420b4c9b66
1 changed files with 16 additions and 1 deletions
|
@ -3804,6 +3804,21 @@ static const struct attribute_group *skx_iio_attr_update[] = {
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void pmu_clear_mapping_attr(const struct attribute_group **groups,
|
||||||
|
struct attribute_group *ag)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; groups[i]; i++) {
|
||||||
|
if (groups[i] == ag) {
|
||||||
|
for (i++; groups[i]; i++)
|
||||||
|
groups[i - 1] = groups[i];
|
||||||
|
groups[i - 1] = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
pmu_iio_set_mapping(struct intel_uncore_type *type, struct attribute_group *ag)
|
pmu_iio_set_mapping(struct intel_uncore_type *type, struct attribute_group *ag)
|
||||||
{
|
{
|
||||||
|
@ -3852,7 +3867,7 @@ pmu_iio_set_mapping(struct intel_uncore_type *type, struct attribute_group *ag)
|
||||||
clear_topology:
|
clear_topology:
|
||||||
kfree(type->topology);
|
kfree(type->topology);
|
||||||
clear_attr_update:
|
clear_attr_update:
|
||||||
type->attr_update = NULL;
|
pmu_clear_mapping_attr(type->attr_update, ag);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue