tasklets: execute tasklets in the same order they were queued
authorOlof Johansson <olof@lixom.net>
Tue, 4 Mar 2008 23:23:25 +0000 (15:23 -0800)
committerIngo Molnar <mingo@elte.hu>
Sat, 19 Apr 2008 17:44:58 +0000 (19:44 +0200)
commit48f20a9a9488c432fc86df1ff4b7f4fa895d1183
tree987a41075c8a6640968b6b2054306644e10e4933
parentac086bc22997a2be24fc40fc8d46522fe7e03d11
tasklets: execute tasklets in the same order they were queued

I noticed this when looking at an openswan issue.  Openswan (ab?)uses the
tasklet API to defer processing of packets in some situations, with one
packet per tasklet_action().  I started noticing sequences of
backwards-ordered sequence numbers coming over the wire, since new tasklets
are always queued at the head of the list but processed sequentially.

Convert it to instead append new entries to the tail of the list.  As an
extra bonus, the splicing code in takeover_tasklets() no longer has to
iterate over the list.

Signed-off-by: Olof Johansson <olof@lixom.net>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/softirq.c