From: Matt Mackall <mpm@xxxxxxxxxxx>
This fixes a bug where netpoll can dereference a null ifa_list pointer when
not supplied an IP address at module load and the interface is up but no IP
is configured.
Bonus: unrelated netif_running cleanup
Signed-off by: Jeff Moyer <jmoyer@xxxxxxxxxx>
Signed-off by: Matt Mackall <mpm@xxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---
25-akpm/net/core/netpoll.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff -puN net/core/netpoll.c~netpoll-fix-null-ifa_list-pointer-dereference
net/core/netpoll.c
--- 25/net/core/netpoll.c~netpoll-fix-null-ifa_list-pointer-dereference Wed Nov
10 16:00:35 2004
+++ 25-akpm/net/core/netpoll.c Wed Nov 10 16:00:35 2004
@@ -565,7 +565,7 @@ int netpoll_setup(struct netpoll *np)
goto release;
}
- if (!(ndev->flags & IFF_UP)) {
+ if (!netif_running(ndev)) {
unsigned short oflags;
unsigned long atmost, atleast;
@@ -611,7 +611,7 @@ int netpoll_setup(struct netpoll *np)
rcu_read_lock();
in_dev = __in_dev_get(ndev);
- if (!in_dev) {
+ if (!in_dev || !in_dev->ifa_list) {
rcu_read_unlock();
printk(KERN_ERR "%s: no IP address for %s, aborting\n",
np->name, np->dev_name);
_
|