]> git.neil.brown.name Git - history.git/commitdiff
Import 0.99.14c 0.99.14c
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:09:15 +0000 (15:09 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:09:15 +0000 (15:09 -0500)
Makefile
drivers/net/CONFIG
drivers/net/Makefile
drivers/net/slhc.c
drivers/net/slip.c
include/linux/in.h
kernel/sched.c

index 8e94fff9fa987bfec02bc27e95fd2145fd12df73..626f0f231fa488b8bae251a3c0708684be696862 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 0.99
 PATCHLEVEL = 14
-ALPHA = b
+ALPHA = c
 
 all:   Version zImage
 
index c17d07fb6a2c7e94ee6739c9f813f9a701d5a2c3..882a654610ecef38ab07019d2b6a74fe1ecafc8b 100644 (file)
@@ -27,9 +27,6 @@
 #      LANCE_DEBUG     Set the debugging message level.
 #      DEFAULT_DMA     Change the default DMA to other than 5.
 #  CONFIG_PLIP         The Crynwr-protocol PL/IP driver
-#  SLIP                        The MicroWalt SLIP driver
-#        SL_DUMP       Uses the "dump frame" debug code
-#        SL_COMPRESSED Use CSLIP
 #  D_LINK              The D-Link DE-600 Portable Ethernet Adaptor.
 #        D_LINK_IO     The D-Link I/O address (0x378 == default)
 #        D_LINK_IRQ    The D-Link IRQ number to use (IRQ7 == default)
@@ -42,6 +39,5 @@ EL2_OPTS      = #-UEL2_AUI
 NE_OPTS                =
 HP_OPTS                =
 PLIP_OPTS      =
-SLIP_OPTS      = -DSL_DUMP -DSL_COMPRESSED
 DL_OPTS                = -DD_LINK_IO=0x378 -DD_LINK_IRQ=7 -UD_LINK_DEBUG
 AT_OPTS                = # -DLANCE_DMA=5
index c535be7bbc1c2fdccd09e9992cae5b6fef83f96d..2a958fdad658765187a586aa04f8b804f805a755 100644 (file)
@@ -70,7 +70,7 @@ endif
 ifdef CONFIG_SLIP
 NETDRV_OBJS := $(NETDRV_OBJS) net.a(slip.o) net.a(slhc.o)
 slip.o:        slip.c CONFIG
-       $(CC) $(CPPFLAGS) $(CFLAGS) $(SLIP_OPTS) -c $<
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
 endif
 
 ifdef CONFIG_DE600
index 32e10d392d551ee1169cb81acde6982c22e7af43..9ba15d0193f430ca68825156b21547a9b03929bb 100644 (file)
@@ -593,7 +593,10 @@ slhc_uncompress(struct slcompress *comp, unsigned char *icp, int isize)
         * packet.  Recalculate IP checksum (but not TCP checksum).
         */
 
-       len = isize - (cp - icp) + hdrlen;
+       len = isize - (cp - icp);
+       if (len < 0)
+               goto bad;
+       len += hdrlen;
        ip->tot_len = htons(len);
        ip->check = 0;
 
index 0c3720f6ce832445ac6cab726b8695939e18405a..bf8410a794f554a53d69a9ac19424999003beadb 100644 (file)
@@ -20,6 +20,8 @@
  */
 #include <asm/segment.h>
 #include <asm/system.h>
+
+#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>
@@ -47,7 +49,6 @@
 #include "slip.h"
 #include "slhc.h"
 
-
 #define        SLIP_VERSION    "0.7.5"
 
 /* Define some IP layer stuff.  Not all systems have it. */
index c3c656b9ee776d99e798fec4625a1275aaa3525d..7ea09236a2c77f4c574d53053cec3a25c30a9afe 100644 (file)
@@ -124,9 +124,9 @@ extern unsigned short int   htons(unsigned short int);
 static __inline__ unsigned long int
 __ntohl(unsigned long int x)
 {
-       __asm__("xchgb %l0,%h0\n\t"     /* swap lower bytes     */
+       __asm__("xchgb %b0,%h0\n\t"     /* swap lower bytes     */
                "rorl $16,%0\n\t"       /* swap words           */
-               "xchgb %l0,%h0"         /* swap higher bytes    */
+               "xchgb %b0,%h0"         /* swap higher bytes    */
                :"=q" (x)
                : "0" (x));
        return x;
@@ -144,9 +144,9 @@ __ntohs(unsigned short int x)
 static __inline__ unsigned long int
 __htonl(unsigned long int x)
 {
-       __asm__("xchgb %l0,%h0\n\t"     /* swap lower bytes     */
+       __asm__("xchgb %b0,%h0\n\t"     /* swap lower bytes     */
                "rorl $16,%0\n\t"       /* swap words           */
-               "xchgb %l0,%h0"         /* swap higher bytes    */
+               "xchgb %b0,%h0"         /* swap higher bytes    */
                :"=q" (x)
                : "0" (x));
        return x;
index 7a9a01d8390d92b01f78011fab8aa6b6a13c8b67..809329bb76a3c5d47dc568703bc1b2e2f338b3bd 100644 (file)
@@ -533,6 +533,9 @@ static void second_overflow(void)
  */
 static void timer_bh(void * unused)
 {
+       unsigned long mask;
+       struct timer_struct *tp;
+
        cli();
        while (next_timer && next_timer->expires == 0) {
                void (*fn)(unsigned long) = next_timer->function;
@@ -543,6 +546,18 @@ static void timer_bh(void * unused)
                cli();
        }
        sti();
+       
+       for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
+               if (mask > timer_active)
+                       break;
+               if (!(mask & timer_active))
+                       continue;
+               if (tp->expires > jiffies)
+                       continue;
+               timer_active &= ~mask;
+               tp->fn();
+               sti();
+       }
 }
 
 /*
@@ -554,7 +569,7 @@ static void timer_bh(void * unused)
 static void do_timer(struct pt_regs * regs)
 {
        unsigned long mask;
-       struct timer_struct *tp = timer_table+0;
+       struct timer_struct *tp;
 
        long ltemp;
 
@@ -636,16 +651,14 @@ static void do_timer(struct pt_regs * regs)
                current->it_prof_value = current->it_prof_incr;
                send_sig(SIGPROF,current,1);
        }
-       for (mask = 1 ; mask ; tp++,mask += mask) {
+       for (mask = 1, tp = timer_table+0 ; mask ; tp++,mask += mask) {
                if (mask > timer_active)
                        break;
                if (!(mask & timer_active))
                        continue;
                if (tp->expires > jiffies)
                        continue;
-               timer_active &= ~mask;
-               tp->fn();
-               sti();
+               mark_bh(TIMER_BH);
        }
        cli();
        itimer_ticks++;