diff options
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r-- | kernel/sysctl.c | 17 |
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 | ||
1587 | static void free_head(struct rcu_head *rcu) | ||
1588 | { | ||
1589 | kfree(container_of(rcu, struct ctl_table_header, rcu)); | ||
1590 | } | ||
1591 | |||
1592 | void sysctl_head_put(struct ctl_table_header *head) | 1593 | void 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 | ||