Subject: Re: BUG: unable to handle kernel NULL pointer dereference at 000000000000002c

From: Stefan Priebe - Profihost AG <[email-masked]>
Date: Mon, 06 Feb 2012 12:31:34 +0100

Hi Greg, Hi Eric,

>> how to get an allyesconfig? Or just doing something like:
>> rm -f .config; /usr/bin/yes | make oldconfig
>
> Save your .config, since next step will destroy it :
>
> make allyesconfig
>
> Then build :
>
> make   $your_favorite_build_options

here is the missing patch attached to have a fine build with
allyesconfig.allyesconfig

Stefan
>>From fdfbdcc7c4698225e7d185f65f3fc176cc22116f Mon Sep 17 00:00:00 2001
From: Stefan Priebe <[email-masked]>
Date: Mon, 6 Feb 2012 12:26:03 +0100
Subject: [PATCH] - missing fixes for 0002-net-Abstract-dst-neighbour-accesses-behind-helpers.patch

---
 net/decnet/dn_neigh.c |    6 +++---
 net/decnet/dn_route.c |    2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c
index 2a90341..9810610 100644
--- a/net/decnet/dn_neigh.c
+++ b/net/decnet/dn_neigh.c
@@ -227,7 +227,7 @@ static int dn_neigh_output_packet(struct sk_buff *skb)
 static int dn_long_output(struct sk_buff *skb)
 {
 	struct dst_entry *dst = skb_dst(skb);
-	struct neighbour *neigh = dst->neighbour;
+	struct neighbour *neigh = dst_get_neighbour(dst);
 	struct net_device *dev = neigh->dev;
 	int headroom = dev->hard_header_len + sizeof(struct dn_long_packet) + 3;
 	unsigned char *data;
@@ -274,7 +274,7 @@ static int dn_long_output(struct sk_buff *skb)
 static int dn_short_output(struct sk_buff *skb)
 {
 	struct dst_entry *dst = skb_dst(skb);
-	struct neighbour *neigh = dst->neighbour;
+	struct neighbour *neigh = dst_get_neighbour(dst);
 	struct net_device *dev = neigh->dev;
 	int headroom = dev->hard_header_len + sizeof(struct dn_short_packet) + 2;
 	struct dn_short_packet *sp;
@@ -318,7 +318,7 @@ static int dn_short_output(struct sk_buff *skb)
 static int dn_phase3_output(struct sk_buff *skb)
 {
 	struct dst_entry *dst = skb_dst(skb);
-	struct neighbour *neigh = dst->neighbour;
+	struct neighbour *neigh = dst_get_neighbour(dst);
 	struct net_device *dev = neigh->dev;
 	int headroom = dev->hard_header_len + sizeof(struct dn_short_packet) + 2;
 	struct dn_short_packet *sp;
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c
index df69e92..4bb1456 100644
--- a/net/decnet/dn_route.c
+++ b/net/decnet/dn_route.c
@@ -754,7 +754,7 @@ static int dn_forward(struct sk_buff *skb)
 	struct dst_entry *dst = skb_dst(skb);
 	struct dn_dev *dn_db = rcu_dereference(dst->dev->dn_ptr);
 	struct dn_route *rt;
-	struct neighbour *neigh = dst->neighbour;
+	struct neighbour *neigh = dst_get_neighbour(dst);
 	int header_len;
 #ifdef CONFIG_NETFILTER
 	struct net_device *dev = skb->dev;
-- 
1.7.1