diff options
Diffstat (limited to 'kernel/trace/trace_ksym.c')
| -rw-r--r-- | kernel/trace/trace_ksym.c | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/kernel/trace/trace_ksym.c b/kernel/trace/trace_ksym.c index d59cd6879477..8eaf00749b65 100644 --- a/kernel/trace/trace_ksym.c +++ b/kernel/trace/trace_ksym.c | |||
| @@ -34,12 +34,6 @@ | |||
| 34 | 34 | ||
| 35 | #include <asm/atomic.h> | 35 | #include <asm/atomic.h> |
| 36 | 36 | ||
| 37 | /* | ||
| 38 | * For now, let us restrict the no. of symbols traced simultaneously to number | ||
| 39 | * of available hardware breakpoint registers. | ||
| 40 | */ | ||
| 41 | #define KSYM_TRACER_MAX HBP_NUM | ||
| 42 | |||
| 43 | #define KSYM_TRACER_OP_LEN 3 /* rw- */ | 37 | #define KSYM_TRACER_OP_LEN 3 /* rw- */ |
| 44 | 38 | ||
| 45 | struct trace_ksym { | 39 | struct trace_ksym { |
| @@ -53,7 +47,6 @@ struct trace_ksym { | |||
| 53 | 47 | ||
| 54 | static struct trace_array *ksym_trace_array; | 48 | static struct trace_array *ksym_trace_array; |
| 55 | 49 | ||
| 56 | static unsigned int ksym_filter_entry_count; | ||
| 57 | static unsigned int ksym_tracing_enabled; | 50 | static unsigned int ksym_tracing_enabled; |
| 58 | 51 | ||
| 59 | static HLIST_HEAD(ksym_filter_head); | 52 | static HLIST_HEAD(ksym_filter_head); |
| @@ -181,13 +174,6 @@ int process_new_ksym_entry(char *ksymname, int op, unsigned long addr) | |||
| 181 | struct trace_ksym *entry; | 174 | struct trace_ksym *entry; |
| 182 | int ret = -ENOMEM; | 175 | int ret = -ENOMEM; |
| 183 | 176 | ||
| 184 | if (ksym_filter_entry_count >= KSYM_TRACER_MAX) { | ||
| 185 | printk(KERN_ERR "ksym_tracer: Maximum limit:(%d) reached. No" | ||
| 186 | " new requests for tracing can be accepted now.\n", | ||
| 187 | KSYM_TRACER_MAX); | ||
| 188 | return -ENOSPC; | ||
| 189 | } | ||
| 190 | |||
| 191 | entry = kzalloc(sizeof(struct trace_ksym), GFP_KERNEL); | 177 | entry = kzalloc(sizeof(struct trace_ksym), GFP_KERNEL); |
| 192 | if (!entry) | 178 | if (!entry) |
| 193 | return -ENOMEM; | 179 | return -ENOMEM; |
| @@ -203,13 +189,17 @@ int process_new_ksym_entry(char *ksymname, int op, unsigned long addr) | |||
| 203 | 189 | ||
| 204 | if (IS_ERR(entry->ksym_hbp)) { | 190 | if (IS_ERR(entry->ksym_hbp)) { |
| 205 | ret = PTR_ERR(entry->ksym_hbp); | 191 | ret = PTR_ERR(entry->ksym_hbp); |
| 206 | printk(KERN_INFO "ksym_tracer request failed. Try again" | 192 | if (ret == -ENOSPC) { |
| 207 | " later!!\n"); | 193 | printk(KERN_ERR "ksym_tracer: Maximum limit reached." |
| 194 | " No new requests for tracing can be accepted now.\n"); | ||
| 195 | } else { | ||
| 196 | printk(KERN_INFO "ksym_tracer request failed. Try again" | ||
| 197 | " later!!\n"); | ||
| 198 | } | ||
| 208 | goto err; | 199 | goto err; |
| 209 | } | 200 | } |
| 210 | 201 | ||
| 211 | hlist_add_head_rcu(&(entry->ksym_hlist), &ksym_filter_head); | 202 | hlist_add_head_rcu(&(entry->ksym_hlist), &ksym_filter_head); |
| 212 | ksym_filter_entry_count++; | ||
| 213 | 203 | ||
| 214 | return 0; | 204 | return 0; |
| 215 | 205 | ||
| @@ -265,7 +255,6 @@ static void __ksym_trace_reset(void) | |||
| 265 | hlist_for_each_entry_safe(entry, node, node1, &ksym_filter_head, | 255 | hlist_for_each_entry_safe(entry, node, node1, &ksym_filter_head, |
| 266 | ksym_hlist) { | 256 | ksym_hlist) { |
| 267 | unregister_wide_hw_breakpoint(entry->ksym_hbp); | 257 | unregister_wide_hw_breakpoint(entry->ksym_hbp); |
| 268 | ksym_filter_entry_count--; | ||
| 269 | hlist_del_rcu(&(entry->ksym_hlist)); | 258 | hlist_del_rcu(&(entry->ksym_hlist)); |
| 270 | synchronize_rcu(); | 259 | synchronize_rcu(); |
| 271 | kfree(entry); | 260 | kfree(entry); |
| @@ -338,7 +327,6 @@ static ssize_t ksym_trace_filter_write(struct file *file, | |||
| 338 | goto out_unlock; | 327 | goto out_unlock; |
| 339 | } | 328 | } |
| 340 | /* Error or "symbol:---" case: drop it */ | 329 | /* Error or "symbol:---" case: drop it */ |
| 341 | ksym_filter_entry_count--; | ||
| 342 | hlist_del_rcu(&(entry->ksym_hlist)); | 330 | hlist_del_rcu(&(entry->ksym_hlist)); |
| 343 | synchronize_rcu(); | 331 | synchronize_rcu(); |
| 344 | kfree(entry); | 332 | kfree(entry); |
