diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1998-09-19 19:15:08 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1998-09-19 19:15:08 +0000 |
commit | 03ba4131783cc9e872f8bb26a03f15bc11f27564 (patch) | |
tree | 88db8dba75ae06ba3bad08e42c5e52efc162535c /net/wanrouter | |
parent | 257730f99381dd26e10b832fce4c94cae7ac1176 (diff) |
- Merge with Linux 2.1.121.
- Bugfixes.
Diffstat (limited to 'net/wanrouter')
-rw-r--r-- | net/wanrouter/wanmain.c | 15 | ||||
-rw-r--r-- | net/wanrouter/wanproc.c | 11 |
2 files changed, 16 insertions, 10 deletions
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c index fabe85161..5dda55a35 100644 --- a/net/wanrouter/wanmain.c +++ b/net/wanrouter/wanmain.c @@ -5,7 +5,7 @@ * the following common services for the WAN Link Drivers: * o WAN device managenment (registering, unregistering) * o Network interface management -* o Physical connection management (dial-up, incoming calls) +* o Physical connection management (dial-up, incomming calls) * o Logical connection management (switched virtual circuits) * o Protocol encapsulation/decapsulation * @@ -25,7 +25,6 @@ * Oct 15, 1997 Farhan Thawar changed wan_encapsulate to add a pad byte of 0 * Apr 20, 1998 Alan Cox Fixed 2.1 symbols * May 17, 1998 K. Baranowski Fixed SNAP encapsulation in wan_encapsulate -* Aug 15, 1998 Arnaldo C. Melo Fixed device_setup return value *****************************************************************************/ #include <linux/stddef.h> /* offsetof(), etc. */ @@ -373,8 +372,9 @@ int wanrouter_ioctl(struct inode* inode, struct file* file, struct proc_dir_entry* dent; wan_device_t* wandev; - if (!capable(CAP_NET_ADMIN)) + if (!capable(CAP_NET_ADMIN)){ return -EPERM; + } if ((cmd >> 8) != ROUTER_IOCTL) return -EINVAL; @@ -443,7 +443,7 @@ static int device_setup (wan_device_t* wandev, wandev_conf_t* u_conf) if (wandev->setup == NULL) /* Nothing to do ? */ return 0; - + conf = kmalloc(sizeof(wandev_conf_t), GFP_KERNEL); if (conf == NULL) return -ENOBUFS; @@ -459,15 +459,17 @@ static int device_setup (wan_device_t* wandev, wandev_conf_t* u_conf) if (conf->data_size && conf->data) { - if(conf->data_size > 1024 || conf->data_size < 0) + if(conf->data_size > 64000 || conf->data_size < 0){ goto bail; + } data = kmalloc(conf->data_size, GFP_KERNEL); if (data) { if(!copy_from_user(data, conf->data, conf->data_size)) { conf->data=data; - err = wandev->setup(wandev,conf); + wandev->setup(wandev,conf); + err = 0; } else err = -ENOBUFS; @@ -681,6 +683,7 @@ static int delete_interface (wan_device_t* wandev, char* name, int force) --wandev->ndev; sti(); /****** critical section end ******/ + printk("Unregistering '%s'\n", dev->name); unregister_netdev(dev); kfree(dev); return 0; diff --git a/net/wanrouter/wanproc.c b/net/wanrouter/wanproc.c index 088487077..f92f87e1f 100644 --- a/net/wanrouter/wanproc.c +++ b/net/wanrouter/wanproc.c @@ -29,6 +29,7 @@ #include <asm/segment.h> /* kernel <-> user copy */ #include <asm/byteorder.h> /* htons(), etc. */ #include <asm/uaccess.h> /* copy_to_user */ +#include <asm/io.h> #include <linux/wanrouter.h> /* WAN router API definitions */ @@ -102,6 +103,7 @@ static struct file_operations router_fops = NULL, /* ioctl */ NULL, /* mmap */ NULL, /* no special open code */ + NULL, /* flush */ NULL, /* no special release code */ NULL /* can't fsync */ }; @@ -141,6 +143,7 @@ static struct file_operations wandev_fops = wanrouter_ioctl, /* ioctl */ NULL, /* mmap */ NULL, /* no special open code */ + NULL, /* flush */ NULL, /* no special release code */ NULL /* can't fsync */ }; @@ -241,7 +244,7 @@ static struct proc_dir_entry proc_router_stat = /* Strings */ static char conf_hdr[] = - "Device name | port |IRQ|DMA|mem.addr|mem.size|" + "Device name | port |IRQ|DMA| mem.addr |mem.size|" "option1|option2|option3|option4\n"; static char stat_hdr[] = @@ -384,16 +387,16 @@ static int config_get_info(char* buf, char** start, off_t offs, int len, wan_device_t* wandev; strcpy(buf, conf_hdr); for (wandev = router_devlist; - wandev && (cnt < (PROC_BUFSZ - 80)); + wandev && (cnt < (PROC_BUFSZ - 120)); wandev = wandev->next) { if (wandev->state) cnt += sprintf(&buf[cnt], - "%-15s|0x%-4X|%3u|%3u|0x%-6lX|0x%-6X|%7u|%7u|%7u|%7u\n", + "%-15s|0x%-4X|%3u|%3u| 0x%-8lX |0x%-6X|%7u|%7u|%7u|%7u\n", wandev->name, wandev->ioport, wandev->irq, wandev->dma, - wandev->maddr, + virt_to_phys(wandev->maddr), wandev->msize, wandev->hw_opt[0], wandev->hw_opt[1], |