aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org>2013-02-09 02:00:59 -0500
committerDavid S. Miller <davem@davemloft.net>2013-02-11 00:21:44 -0500
commitdaaba4fa17d7826807b0b131f796543b4099ef4a (patch)
tree1e37527650f62049fbd0bbe205f608f18415df76
parentec16ef2228829698fdbd2f6b160ff52551a6bf8a (diff)
net neighbour, decnet: Ensure to align device private data on preferred alignment.
To allow both of protocol-specific data and device-specific data attached with neighbour entry, and to eliminate size calculation cost when allocating entry, sizeof protocol-speicic data must be multiple of NEIGH_PRIV_ALIGN. On 64bit archs, sizeof(struct dn_neigh) is multiple of NEIGH_PRIV_ALIGN, but on 32bit archs, it was not. Introduce NEIGH_ENTRY_SPACE() macro to ensure that protocol-specific entry-size meets our requirement. Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/neighbour.h1
-rw-r--r--net/decnet/dn_neigh.c2
2 files changed, 2 insertions, 1 deletions
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index 629ee573c6d0..7e748ad8b50c 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -181,6 +181,7 @@ struct neigh_table {
181}; 181};
182 182
183#define NEIGH_PRIV_ALIGN sizeof(long long) 183#define NEIGH_PRIV_ALIGN sizeof(long long)
184#define NEIGH_ENTRY_SIZE(size) ALIGN((size), NEIGH_PRIV_ALIGN)
184 185
185static inline void *neighbour_priv(const struct neighbour *n) 186static inline void *neighbour_priv(const struct neighbour *n)
186{ 187{
diff --git a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c
index 3aede1b459fd..856636addd76 100644
--- a/net/decnet/dn_neigh.c
+++ b/net/decnet/dn_neigh.c
@@ -95,7 +95,7 @@ static u32 dn_neigh_hash(const void *pkey,
95 95
96struct neigh_table dn_neigh_table = { 96struct neigh_table dn_neigh_table = {
97 .family = PF_DECnet, 97 .family = PF_DECnet,
98 .entry_size = sizeof(struct dn_neigh), 98 .entry_size = NEIGH_ENTRY_SIZE(sizeof(struct dn_neigh)),
99 .key_len = sizeof(__le16), 99 .key_len = sizeof(__le16),
100 .hash = dn_neigh_hash, 100 .hash = dn_neigh_hash,
101 .constructor = dn_neigh_construct, 101 .constructor = dn_neigh_construct,