Message ID | 20121123130811.18764.21207.stgit@dragon |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
diff --git a/include/net/inet_frag.h b/include/net/inet_frag.h index 7b897b2..1f75316 100644 --- a/include/net/inet_frag.h +++ b/include/net/inet_frag.h @@ -14,7 +14,6 @@ struct netns_frags { struct inet_frag_queue { struct hlist_node list; - struct netns_frags *net; struct list_head lru_list; /* lru list member */ spinlock_t lock; atomic_t refcnt; @@ -24,6 +23,7 @@ struct inet_frag_queue { ktime_t stamp; int len; /* total length of orig datagram */ int meat; + struct netns_frags *net; u32 creation_ts;/* jiffies when queue was created*/ __u8 last_in; /* first/last segment arrived? */
In inet_frag_find() unfortunate cache-line bounces can occur with struct inet_frag_queue. As the net pointer (struct netns_frags) is placed on the same write-often cache-line as e.g. refcnt and lock. As the hash match check always check (q->net == nf). This (of-cause) only happens on hash bucket collisions, but as current hash size is only 64 this makes collisions more likely. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> --- include/net/inet_frag.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html