Commit 91a72a70 authored by Doug Kehn's avatar Doug Kehn Committed by David S. Miller

net/core: neighbour update Oops

When configuring DMVPN (GRE + openNHRP) and a GRE remote
address is configured a kernel Oops is observed.  The
obserseved Oops is caused by a NULL header_ops pointer
(neigh->dev->header_ops) in neigh_update_hhs() when

void (*update)(struct hh_cache*, const struct net_device*, const unsigned char *)
= neigh->dev->header_ops->cache_update;

is executed.  The dev associated with the NULL header_ops is
the GRE interface.  This patch guards against the
possibility that header_ops is NULL.

This Oops was first observed in kernel version 2.6.26.8.
Signed-off-by: default avatarDoug Kehn <rdkehn@yahoo.com>
Acked-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 87fd308c
...@@ -949,7 +949,10 @@ static void neigh_update_hhs(struct neighbour *neigh) ...@@ -949,7 +949,10 @@ static void neigh_update_hhs(struct neighbour *neigh)
{ {
struct hh_cache *hh; struct hh_cache *hh;
void (*update)(struct hh_cache*, const struct net_device*, const unsigned char *) void (*update)(struct hh_cache*, const struct net_device*, const unsigned char *)
= neigh->dev->header_ops->cache_update; = NULL;
if (neigh->dev->header_ops)
update = neigh->dev->header_ops->cache_update;
if (update) { if (update) {
for (hh = neigh->hh; hh; hh = hh->hh_next) { for (hh = neigh->hh; hh; hh = hh->hh_next) {
......
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