From 954125584ee23187133cb17539cdff8a950c5040 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Tue, 7 Aug 2012 10:55:45 +0000 Subject: [PATCH] --- yaml --- r: 321573 b: refs/heads/master c: a37e6e344910a43b9ebc2bbf29a029f5ea942598 h: refs/heads/master i: 321571: d9e45c1c63a0591a3fd81e85bbcc5ccdb97b1965 v: v3 --- [refs] | 2 +- trunk/include/net/dst.h | 2 +- trunk/net/core/dst.c | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index fe4a8dc67c61..9560e5c8a854 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0c03eca3d995e73d691edea8c787e25929ec156d +refs/heads/master: a37e6e344910a43b9ebc2bbf29a029f5ea942598 diff --git a/trunk/include/net/dst.h b/trunk/include/net/dst.h index baf597890064..621e3513ef5e 100644 --- a/trunk/include/net/dst.h +++ b/trunk/include/net/dst.h @@ -110,7 +110,7 @@ struct dst_entry { }; extern u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old); -extern const u32 dst_default_metrics[RTAX_MAX]; +extern const u32 dst_default_metrics[]; #define DST_METRICS_READ_ONLY 0x1UL #define __DST_METRICS_PTR(Y) \ diff --git a/trunk/net/core/dst.c b/trunk/net/core/dst.c index 069d51d29414..56d63612e1e4 100644 --- a/trunk/net/core/dst.c +++ b/trunk/net/core/dst.c @@ -149,7 +149,15 @@ int dst_discard(struct sk_buff *skb) } EXPORT_SYMBOL(dst_discard); -const u32 dst_default_metrics[RTAX_MAX]; +const u32 dst_default_metrics[RTAX_MAX + 1] = { + /* This initializer is needed to force linker to place this variable + * into const section. Otherwise it might end into bss section. + * We really want to avoid false sharing on this variable, and catch + * any writes on it. + */ + [RTAX_MAX] = 0xdeadbeef, +}; + void *dst_alloc(struct dst_ops *ops, struct net_device *dev, int initial_ref, int initial_obsolete, unsigned short flags)