Fix minor TCP-blocking bugs
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 23 Jan 2014 00:45:56 +0000 (16:45 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 23 Jan 2014 00:45:56 +0000 (16:45 -0800)
The hash bug fix was from 034f947dd.

kern/src/net/ipaux.c
kern/src/ns/allocb.c

index 1b6ecb7..3814adf 100644 (file)
@@ -518,11 +518,15 @@ parsemac(uint8_t *to, char *from, int len)
 
 /*
  *  hashing tcp, udp, ... connections
+ *  gcc weirdness: it gave a bogus result until ron split the %= out.
  */
-uint32_t
-iphash(uint8_t *sa, uint16_t sp, uint8_t *da, uint16_t dp)
+uint32_t iphash(uint8_t * sa, uint16_t sp, uint8_t * da, uint16_t dp)
 {
-       return ((sa[IPaddrlen-1]<<24) ^ (sp << 16) ^ (da[IPaddrlen-1]<<8) ^ dp ) % Nhash;
+       uint32_t ret;
+       ret = (sa[IPaddrlen - 1] << 24) ^ (sp << 16) ^ (da[IPaddrlen - 1] << 8)
+             ^ dp;
+       ret %= Nhash;
+       return ret;
 }
 
 void
index cac7b5d..cd6559e 100644 (file)
@@ -66,8 +66,6 @@ struct block *allocb(int size)
 {
        struct block *b;
 
-       if (!current)
-               panic("allocb outside process: %p", getcallerpc(&size));
        b = _allocb(size);
        if (b == 0)
                exhausted("Blocks");