diff -u --recursive --new-file v2.1.132/linux/Makefile linux/Makefile --- v2.1.132/linux/Makefile Tue Dec 22 14:16:53 1998 +++ linux/Makefile Tue Dec 22 14:17:27 1998 @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 1 -SUBLEVEL = 132 +SUBLEVEL = 133 ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) diff -u --recursive --new-file v2.1.132/linux/arch/i386/kernel/irq.c linux/arch/i386/kernel/irq.c --- v2.1.132/linux/arch/i386/kernel/irq.c Tue Dec 22 14:16:53 1998 +++ linux/arch/i386/kernel/irq.c Tue Dec 22 15:14:49 1998 @@ -709,7 +709,7 @@ spin_lock_irqsave(&irq_controller_lock, flags); switch (irq_desc[irq].depth) { case 1: - irq_desc[irq].status &= ~IRQ_DISABLED; + irq_desc[irq].status &= ~(IRQ_DISABLED | IRQ_INPROGRESS); irq_desc[irq].handler->enable(irq); /* fall throught */ default: diff -u --recursive --new-file v2.1.132/linux/net/wanrouter/wanmain.c linux/net/wanrouter/wanmain.c --- v2.1.132/linux/net/wanrouter/wanmain.c Tue Dec 22 14:16:59 1998 +++ linux/net/wanrouter/wanmain.c Tue Dec 22 17:12:09 1998 @@ -27,6 +27,9 @@ * May 17, 1998 K. Baranowski Fixed SNAP encapsulation in wan_encapsulate * Dec 15, 1998 Arnaldo Melo support for firmwares of up to 128000 bytes * check wandev->setup return value +* Dec 22, 1998 Arnaldo Melo vmalloc/vfree used in device_setup to allocate +* kernel memory and copy configuration data to +* kernel space (for big firmwares) *****************************************************************************/ #include /* offsetof(), etc. */ @@ -34,6 +37,7 @@ #include #include /* support for loadable modules */ #include /* kmalloc(), kfree() */ +#include /* vmalloc(), vfree() */ #include /* verify_area(), etc. */ #include /* inline mem*, str* functions */ #include /* kernel <-> user copy */ @@ -464,7 +468,7 @@ if(conf->data_size > 128000 || conf->data_size < 0){ goto bail; } - data = kmalloc(conf->data_size, GFP_KERNEL); + data = vmalloc(conf->data_size); if (data) { if(!copy_from_user(data, conf->data, conf->data_size)) @@ -474,9 +478,8 @@ } else err = -ENOBUFS; + vfree(data); } - if (data) - kfree(data); } bail: kfree(conf);