mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 02:36:02 +00:00
drivers/perf: Prevent forced unbinding of PMU drivers
Forcefully unbinding PMU drivers during perf sampling will lead to a kernel panic, because the perf upper-layer framework call a NULL pointer in this situation. To solve this issue, "suppress_bind_attrs" should be set to true, so that bind/unbind can be disabled via sysfs and prevent unbinding PMU drivers during perf sampling. Signed-off-by: Qi Liu <liuqi115@huawei.com> Reviewed-by: John Garry <john.garry@huawei.com> Link: https://lore.kernel.org/r/1594975763-32966-1-git-send-email-liuqi115@huawei.com Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
bd024e82e4
commit
f32ed8eb0e
@ -1718,6 +1718,7 @@ static struct platform_driver cci_pmu_driver = {
|
||||
.driver = {
|
||||
.name = DRIVER_NAME,
|
||||
.of_match_table = arm_cci_pmu_matches,
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = cci_pmu_probe,
|
||||
.remove = cci_pmu_remove,
|
||||
|
@ -1545,6 +1545,7 @@ static struct platform_driver arm_ccn_driver = {
|
||||
.driver = {
|
||||
.name = "arm-ccn",
|
||||
.of_match_table = arm_ccn_match,
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = arm_ccn_probe,
|
||||
.remove = arm_ccn_remove,
|
||||
|
@ -757,6 +757,7 @@ static struct platform_driver dsu_pmu_driver = {
|
||||
.driver = {
|
||||
.name = DRVNAME,
|
||||
.of_match_table = of_match_ptr(dsu_pmu_of_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = dsu_pmu_device_probe,
|
||||
.remove = dsu_pmu_device_remove,
|
||||
|
@ -860,6 +860,7 @@ static void smmu_pmu_shutdown(struct platform_device *pdev)
|
||||
static struct platform_driver smmu_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "arm-smmu-v3-pmcg",
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = smmu_pmu_probe,
|
||||
.remove = smmu_pmu_remove,
|
||||
|
@ -1226,6 +1226,7 @@ static struct platform_driver arm_spe_pmu_driver = {
|
||||
.driver = {
|
||||
.name = DRVNAME,
|
||||
.of_match_table = of_match_ptr(arm_spe_pmu_of_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = arm_spe_pmu_device_probe,
|
||||
.remove = arm_spe_pmu_device_remove,
|
||||
|
@ -707,6 +707,7 @@ static struct platform_driver imx_ddr_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "imx-ddr-pmu",
|
||||
.of_match_table = imx_ddr_pmu_dt_ids,
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = ddr_perf_probe,
|
||||
.remove = ddr_perf_remove,
|
||||
|
@ -419,6 +419,7 @@ static struct platform_driver hisi_ddrc_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "hisi_ddrc_pmu",
|
||||
.acpi_match_table = ACPI_PTR(hisi_ddrc_pmu_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = hisi_ddrc_pmu_probe,
|
||||
.remove = hisi_ddrc_pmu_remove,
|
||||
|
@ -431,6 +431,7 @@ static struct platform_driver hisi_hha_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "hisi_hha_pmu",
|
||||
.acpi_match_table = ACPI_PTR(hisi_hha_pmu_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = hisi_hha_pmu_probe,
|
||||
.remove = hisi_hha_pmu_remove,
|
||||
|
@ -421,6 +421,7 @@ static struct platform_driver hisi_l3c_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "hisi_l3c_pmu",
|
||||
.acpi_match_table = ACPI_PTR(hisi_l3c_pmu_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = hisi_l3c_pmu_probe,
|
||||
.remove = hisi_l3c_pmu_remove,
|
||||
|
@ -1028,6 +1028,7 @@ static struct platform_driver l2_cache_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-l2cache-pmu",
|
||||
.acpi_match_table = ACPI_PTR(l2_cache_pmu_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = l2_cache_pmu_probe,
|
||||
.remove = l2_cache_pmu_remove,
|
||||
|
@ -814,6 +814,7 @@ static struct platform_driver qcom_l3_cache_pmu_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-l3cache-pmu",
|
||||
.acpi_match_table = ACPI_PTR(qcom_l3_cache_pmu_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = qcom_l3_cache_pmu_probe,
|
||||
};
|
||||
|
@ -1017,6 +1017,7 @@ static struct platform_driver tx2_uncore_driver = {
|
||||
.driver = {
|
||||
.name = "tx2-uncore-pmu",
|
||||
.acpi_match_table = ACPI_PTR(tx2_uncore_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
.probe = tx2_uncore_probe,
|
||||
.remove = tx2_uncore_remove,
|
||||
|
@ -1975,6 +1975,7 @@ static struct platform_driver xgene_pmu_driver = {
|
||||
.name = "xgene-pmu",
|
||||
.of_match_table = xgene_pmu_of_match,
|
||||
.acpi_match_table = ACPI_PTR(xgene_pmu_acpi_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user