aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sysctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r--kernel/sysctl.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 4fc92445a29c..11d65b531e50 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -938,6 +938,12 @@ static struct ctl_table kern_table[] = {
938 }, 938 },
939#endif 939#endif
940#ifdef CONFIG_PERF_EVENTS 940#ifdef CONFIG_PERF_EVENTS
941 /*
942 * User-space scripts rely on the existence of this file
943 * as a feature check for perf_events being enabled.
944 *
945 * So it's an ABI, do not remove!
946 */
941 { 947 {
942 .procname = "perf_event_paranoid", 948 .procname = "perf_event_paranoid",
943 .data = &sysctl_perf_event_paranoid, 949 .data = &sysctl_perf_event_paranoid,
@@ -1584,16 +1590,11 @@ void sysctl_head_get(struct ctl_table_header *head)
1584 spin_unlock(&sysctl_lock); 1590 spin_unlock(&sysctl_lock);
1585} 1591}
1586 1592
1587static void free_head(struct rcu_head *rcu)
1588{
1589 kfree(container_of(rcu, struct ctl_table_header, rcu));
1590}
1591
1592void sysctl_head_put(struct ctl_table_header *head) 1593void sysctl_head_put(struct ctl_table_header *head)
1593{ 1594{
1594 spin_lock(&sysctl_lock); 1595 spin_lock(&sysctl_lock);
1595 if (!--head->count) 1596 if (!--head->count)
1596 call_rcu(&head->rcu, free_head); 1597 kfree_rcu(head, rcu);
1597 spin_unlock(&sysctl_lock); 1598 spin_unlock(&sysctl_lock);
1598} 1599}
1599 1600
@@ -1965,10 +1966,10 @@ void unregister_sysctl_table(struct ctl_table_header * header)
1965 start_unregistering(header); 1966 start_unregistering(header);
1966 if (!--header->parent->count) { 1967 if (!--header->parent->count) {
1967 WARN_ON(1); 1968 WARN_ON(1);
1968 call_rcu(&header->parent->rcu, free_head); 1969 kfree_rcu(header->parent, rcu);
1969 } 1970 }
1970 if (!--header->count) 1971 if (!--header->count)
1971 call_rcu(&header->rcu, free_head); 1972 kfree_rcu(header, rcu);
1972 spin_unlock(&sysctl_lock); 1973 spin_unlock(&sysctl_lock);
1973} 1974}
1974 1975