1
0
Fork 0
alistair23-linux/drivers/isdn/mISDN
Sasha Levin b67bfe0d42 hlist: drop the node parameter from iterators
I'm not sure why, but the hlist for each entry iterators were conceived

        list_for_each_entry(pos, head, member)

The hlist ones were greedy and wanted an extra parameter:

        hlist_for_each_entry(tpos, pos, head, member)

Why did they need an extra pos parameter? I'm not quite sure. Not only
they don't really need it, it also prevents the iterator from looking
exactly like the list iterator, which is unfortunate.

Besides the semantic patch, there was some manual work required:

 - Fix up the actual hlist iterators in linux/list.h
 - Fix up the declaration of other iterators based on the hlist ones.
 - A very small amount of places were using the 'node' parameter, this
 was modified to use 'obj->member' instead.
 - Coccinelle didn't handle the hlist_for_each_entry_safe iterator
 properly, so those had to be fixed up manually.

The semantic patch which is mostly the work of Peter Senna Tschudin is here:

@@
iterator name hlist_for_each_entry, hlist_for_each_entry_continue, hlist_for_each_entry_from, hlist_for_each_entry_rcu, hlist_for_each_entry_rcu_bh, hlist_for_each_entry_continue_rcu_bh, for_each_busy_worker, ax25_uid_for_each, ax25_for_each, inet_bind_bucket_for_each, sctp_for_each_hentry, sk_for_each, sk_for_each_rcu, sk_for_each_from, sk_for_each_safe, sk_for_each_bound, hlist_for_each_entry_safe, hlist_for_each_entry_continue_rcu, nr_neigh_for_each, nr_neigh_for_each_safe, nr_node_for_each, nr_node_for_each_safe, for_each_gfn_indirect_valid_sp, for_each_gfn_sp, for_each_host;

type T;
expression a,c,d,e;
identifier b;
statement S;
@@

-T b;
    <+... when != b
(
hlist_for_each_entry(a,
- b,
c, d) S
|
hlist_for_each_entry_continue(a,
- b,
c) S
|
hlist_for_each_entry_from(a,
- b,
c) S
|
hlist_for_each_entry_rcu(a,
- b,
c, d) S
|
hlist_for_each_entry_rcu_bh(a,
- b,
c, d) S
|
hlist_for_each_entry_continue_rcu_bh(a,
- b,
c) S
|
for_each_busy_worker(a, c,
- b,
d) S
|
ax25_uid_for_each(a,
- b,
c) S
|
ax25_for_each(a,
- b,
c) S
|
inet_bind_bucket_for_each(a,
- b,
c) S
|
sctp_for_each_hentry(a,
- b,
c) S
|
sk_for_each(a,
- b,
c) S
|
sk_for_each_rcu(a,
- b,
c) S
|
sk_for_each_from
-(a, b)
+(a)
S
+ sk_for_each_from(a) S
|
sk_for_each_safe(a,
- b,
c, d) S
|
sk_for_each_bound(a,
- b,
c) S
|
hlist_for_each_entry_safe(a,
- b,
c, d, e) S
|
hlist_for_each_entry_continue_rcu(a,
- b,
c) S
|
nr_neigh_for_each(a,
- b,
c) S
|
nr_neigh_for_each_safe(a,
- b,
c, d) S
|
nr_node_for_each(a,
- b,
c) S
|
nr_node_for_each_safe(a,
- b,
c, d) S
|
- for_each_gfn_sp(a, c, d, b) S
+ for_each_gfn_sp(a, c, d) S
|
- for_each_gfn_indirect_valid_sp(a, c, d, b) S
+ for_each_gfn_indirect_valid_sp(a, c, d) S
|
for_each_host(a,
- b,
c) S
|
for_each_host_safe(a,
- b,
c, d) S
|
for_each_mesh_entry(a,
- b,
c, d) S
)
    ...+>

[akpm@linux-foundation.org: drop bogus change from net/ipv4/raw.c]
[akpm@linux-foundation.org: drop bogus hunk from net/ipv6/raw.c]
[akpm@linux-foundation.org: checkpatch fixes]
[akpm@linux-foundation.org: fix warnings]
[akpm@linux-foudnation.org: redo intrusive kvm changes]
Tested-by: Peter Senna Tschudin <peter.senna@gmail.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-27 19:10:24 -08:00
..
Kconfig trivial: fix typos/grammar errors in Kconfig texts 2009-03-30 15:22:01 +02:00
Makefile mISDN: Add ISDN sample clock API to mISDN core 2009-01-09 22:44:27 +01:00
clock.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
core.c driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
core.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp.h mISDN: DSP scheduling fix (version 2) 2012-04-26 03:10:45 -04:00
dsp_audio.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_biquad.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_blowfish.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_cmx.c mISDN: DSP scheduling fix (version 2) 2012-04-26 03:10:45 -04:00
dsp_core.c mISDN: fix race in timer canceling on module unloading 2012-12-14 13:14:07 -05:00
dsp_dtmf.c mISDN: Fix division by zero 2012-04-26 03:10:45 -04:00
dsp_ecdis.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_hwec.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_hwec.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_pipeline.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
dsp_tones.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
fsm.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
fsm.h Add mISDN core files 2008-07-27 01:54:58 +02:00
hwchannel.c Merge branch 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2012-10-02 09:54:49 -07:00
l1oip.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
l1oip_codec.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
l1oip_core.c Merge branch 'master' into for-next 2013-01-29 10:48:30 +01:00
layer1.c mISDN: Layer1 statemachine fix 2012-05-04 11:55:39 -04:00
layer1.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
layer2.c mISDN: Bugfix for layer2 fixed TEI mode 2012-08-06 13:22:50 -07:00
layer2.h isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00
socket.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
stack.c hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
tei.c mISDN: improve bitops usage 2012-11-30 12:10:57 -05:00
timerdev.c isdn: whitespace coding style cleanup 2012-02-21 09:04:01 -08:00