2 Function tt_response_fill_table() actually uses a tt_local_entry pointer to
3 iterate either over the local or the global table entries (it depends on the
4 what hash table is passed as argument). To iterate over such entries the
5 hlist_for_each_entry_rcu() macro has to access their "hash_entry" field which
6 MUST be at the same position in both the tt_global/local_entry structures.
8 Reported-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
9 Signed-off-by: Antonio Quartulli <ordex@autistici.org>
12 1 files changed, 2 insertions(+), 2 deletions(-)
16 @@ -224,22 +224,22 @@ struct socket_packet {
18 struct tt_local_entry {
19 uint8_t addr[ETH_ALEN];
20 + struct hlist_node hash_entry;
21 unsigned long last_seen;
25 - struct hlist_node hash_entry;
28 struct tt_global_entry {
29 uint8_t addr[ETH_ALEN];
30 + struct hlist_node hash_entry; /* entry in the global table */
31 struct orig_node *orig_node;
33 uint16_t flags; /* only TT_GLOBAL_ROAM is used */
34 unsigned long roam_at; /* time at which TT_GLOBAL_ROAM was set */
37 - struct hlist_node hash_entry; /* entry in the global table */
40 struct tt_change_node {