Commit f92ceb01 authored by Kees Cook's avatar Kees Cook Committed by David S. Miller

DECnet: Use container_of() for embedded struct

Instead of a direct cross-type cast, use conatiner_of() to locate
the embedded structure, even in the face of future struct layout
randomization.
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 32f1bc0f
...@@ -110,7 +110,7 @@ struct neigh_table dn_neigh_table = { ...@@ -110,7 +110,7 @@ struct neigh_table dn_neigh_table = {
static int dn_neigh_construct(struct neighbour *neigh) static int dn_neigh_construct(struct neighbour *neigh)
{ {
struct net_device *dev = neigh->dev; struct net_device *dev = neigh->dev;
struct dn_neigh *dn = (struct dn_neigh *)neigh; struct dn_neigh *dn = container_of(neigh, struct dn_neigh, n);
struct dn_dev *dn_db; struct dn_dev *dn_db;
struct neigh_parms *parms; struct neigh_parms *parms;
...@@ -339,7 +339,7 @@ int dn_to_neigh_output(struct net *net, struct sock *sk, struct sk_buff *skb) ...@@ -339,7 +339,7 @@ int dn_to_neigh_output(struct net *net, struct sock *sk, struct sk_buff *skb)
struct dst_entry *dst = skb_dst(skb); struct dst_entry *dst = skb_dst(skb);
struct dn_route *rt = (struct dn_route *) dst; struct dn_route *rt = (struct dn_route *) dst;
struct neighbour *neigh = rt->n; struct neighbour *neigh = rt->n;
struct dn_neigh *dn = (struct dn_neigh *)neigh; struct dn_neigh *dn = container_of(neigh, struct dn_neigh, n);
struct dn_dev *dn_db; struct dn_dev *dn_db;
bool use_long; bool use_long;
...@@ -391,7 +391,7 @@ int dn_neigh_router_hello(struct net *net, struct sock *sk, struct sk_buff *skb) ...@@ -391,7 +391,7 @@ int dn_neigh_router_hello(struct net *net, struct sock *sk, struct sk_buff *skb)
neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1); neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1);
dn = (struct dn_neigh *)neigh; dn = container_of(neigh, struct dn_neigh, n);
if (neigh) { if (neigh) {
write_lock(&neigh->lock); write_lock(&neigh->lock);
...@@ -451,7 +451,7 @@ int dn_neigh_endnode_hello(struct net *net, struct sock *sk, struct sk_buff *skb ...@@ -451,7 +451,7 @@ int dn_neigh_endnode_hello(struct net *net, struct sock *sk, struct sk_buff *skb
neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1); neigh = __neigh_lookup(&dn_neigh_table, &src, skb->dev, 1);
dn = (struct dn_neigh *)neigh; dn = container_of(neigh, struct dn_neigh, n);
if (neigh) { if (neigh) {
write_lock(&neigh->lock); write_lock(&neigh->lock);
...@@ -510,7 +510,7 @@ static void neigh_elist_cb(struct neighbour *neigh, void *_info) ...@@ -510,7 +510,7 @@ static void neigh_elist_cb(struct neighbour *neigh, void *_info)
if (neigh->dev != s->dev) if (neigh->dev != s->dev)
return; return;
dn = (struct dn_neigh *) neigh; dn = container_of(neigh, struct dn_neigh, n);
if (!(dn->flags & (DN_NDFLAG_R1|DN_NDFLAG_R2))) if (!(dn->flags & (DN_NDFLAG_R1|DN_NDFLAG_R2)))
return; return;
...@@ -549,7 +549,7 @@ int dn_neigh_elist(struct net_device *dev, unsigned char *ptr, int n) ...@@ -549,7 +549,7 @@ int dn_neigh_elist(struct net_device *dev, unsigned char *ptr, int n)
static inline void dn_neigh_format_entry(struct seq_file *seq, static inline void dn_neigh_format_entry(struct seq_file *seq,
struct neighbour *n) struct neighbour *n)
{ {
struct dn_neigh *dn = (struct dn_neigh *) n; struct dn_neigh *dn = container_of(n, struct dn_neigh, n);
char buf[DN_ASCBUF_LEN]; char buf[DN_ASCBUF_LEN];
read_lock(&n->lock); read_lock(&n->lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment