2009-03-23 08:26:50

by Tom Zanussi

[permalink] [raw]
Subject: [PATCH] tracing/filters: use list_for_each_entry_safe

Use list_for_each_entry_safe instead of list_for_each_entry in
find_event_field().

Signed-off-by: Tom Zanussi <[email protected]>
Reported-by: Frederic Weisbecker <[email protected]>

---
kernel/trace/trace_events_filter.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 1ab20ce..c4a413b 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -147,11 +147,9 @@ int filter_print_preds(struct filter_pred **preds, char *buf)
static struct ftrace_event_field *
find_event_field(struct ftrace_event_call *call, char *name)
{
- struct ftrace_event_field *field;
- struct list_head *entry, *tmp;
+ struct ftrace_event_field *field, *next;

- list_for_each_safe(entry, tmp, &call->fields) {
- field = list_entry(entry, struct ftrace_event_field, link);
+ list_for_each_entry_safe(field, next, &call->fields, link) {
if (!strcmp(field->name, name))
return field;
}
--
1.5.6.3



2009-03-23 08:30:47

by Li Zefan

[permalink] [raw]
Subject: Re: [PATCH] tracing/filters: use list_for_each_entry_safe

> - list_for_each_safe(entry, tmp, &call->fields) {
> - field = list_entry(entry, struct ftrace_event_field, link);
> + list_for_each_entry_safe(field, next, &call->fields, link) {

Why we need _safe version ?

> if (!strcmp(field->name, name))
> return field;
> }

2009-03-23 08:33:26

by Tom Zanussi

[permalink] [raw]
Subject: [tip:tracing/filters] tracing/filters: use list_for_each_entry_safe

Commit-ID: 75c8b417526529d0a7072e4d93ec99dbd483a6f4
Gitweb: http://git.kernel.org/tip/75c8b417526529d0a7072e4d93ec99dbd483a6f4
Author: Tom Zanussi <[email protected]>
AuthorDate: Mon, 23 Mar 2009 03:26:28 -0500
Committer: Ingo Molnar <[email protected]>
CommitDate: Mon, 23 Mar 2009 09:28:07 +0100

tracing/filters: use list_for_each_entry_safe

Impact: cleanup

Use list_for_each_entry_safe instead of list_for_each_entry in
find_event_field().

Reported-by: Frederic Weisbecker <[email protected]>
Signed-off-by: Tom Zanussi <[email protected]>
Cc: Steven Rostedt <[email protected]>
LKML-Reference: <1237796788.7527.35.camel@charm-linux>
Signed-off-by: Ingo Molnar <[email protected]>


---
kernel/trace/trace_events_filter.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 1ab20ce..c4a413b 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -147,11 +147,9 @@ int filter_print_preds(struct filter_pred **preds, char *buf)
static struct ftrace_event_field *
find_event_field(struct ftrace_event_call *call, char *name)
{
- struct ftrace_event_field *field;
- struct list_head *entry, *tmp;
+ struct ftrace_event_field *field, *next;

- list_for_each_safe(entry, tmp, &call->fields) {
- field = list_entry(entry, struct ftrace_event_field, link);
+ list_for_each_entry_safe(field, next, &call->fields, link) {
if (!strcmp(field->name, name))
return field;
}

2009-03-23 08:34:25

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] tracing/filters: use list_for_each_entry_safe


* Li Zefan <[email protected]> wrote:

> > - list_for_each_safe(entry, tmp, &call->fields) {
> > - field = list_entry(entry, struct ftrace_event_field, link);
> > + list_for_each_entry_safe(field, next, &call->fields, link) {
>
> Why we need _safe version ?

indeed the plain list_for_each_entry() variant would be fine, as the
list is only walked, not modified:

> > if (!strcmp(field->name, name))
> > return field;
> > }

(I've applied this patch already as it was a step forward - so
please enhance this in the next round of cleanups via a delta patch
- thanks!)

Ingo