some weeks ago, I reported some crashes with the new 2.0 kernel
at our IPS's server machine.
The machine is doing heavy ppp/[c]slip work and never had an uptime over
10 hours due to the crashes.
After reporting these problems, Jon Lewis <jlewis@inorganic5.fdt.net>
send me a patch for slhc.c which solved the problem.
(the patch was for 1.2.13 but worked fine in 2.0)
The machine is now up 5 days, 6:34 and i think it's time for a success
report.
If you have problems on a machine doing [c]slip/ppp resulting in
crashes you should try out this patch:
--- linux/drivers/net/slhc.c.orig Sat Jun 15 11:34:26 1996
+++ linux/drivers/net/slhc.c Sat Jun 15 11:36:32 1996
@@ -107,29 +107,27 @@
memset(comp, 0, sizeof(struct slcompress));
if ( rslots > 0 && rslots < 256 ) {
- comp->rstate =
- (struct cstate *)kmalloc(rslots * sizeof(struct cstate),
- GFP_KERNEL);
+ size_t rsize = rslots * sizeof(struct cstate);
+ comp->rstate = (struct cstate *) kmalloc(rsize, GFP_KERNEL);
if (! comp->rstate)
{
kfree((unsigned char *)comp);
return NULL;
}
- memset(comp->rstate, 0, rslots * sizeof(struct cstate));
+ memset(comp->rstate, 0, rsize);
comp->rslot_limit = rslots - 1;
}
if ( tslots > 0 && tslots < 256 ) {
- comp->tstate =
- (struct cstate *)kmalloc(tslots * sizeof(struct cstate),
- GFP_KERNEL);
+ size_t tsize = tslots * sizeof(struct cstate);
+ comp->tstate = (struct cstate *) kmalloc(tsize, GFP_KERNEL);
if (! comp->tstate)
{
kfree((unsigned char *)comp->rstate);
kfree((unsigned char *)comp);
return NULL;
}
- memset(comp->tstate, 0, tslots * sizeof(struct cstate));
+ memset(comp->tstate, 0, tsize);
comp->tslot_limit = tslots - 1;
}
end of patch
regards,
-Michael
-- x(f,s,c)char *s;{return f&1 ? *s ? *s-c ? x(f,++s,c) :7[s]:0:f&2 ? x(--f,"!/*,xq-ih9]c$=le&M t)r\nm@p31n%ag.8}Sdoy",c):f&4 ? *s ? x(f,s+1,putchar(x(f-2,"^&%!*)",*s))) : 0 : 0;}main(){return x(4, "]!x/mhicn$!iihle&!x/mhiM$agimr%p !r@p%he&!x/mhiM !r@p%he",65);}