M port/alloc.c => port/alloc.c +4 -6
@@ 274,13 274,13 @@ good:
bp = arena.btab[pow];
if(bp) {
arena.btab[pow] = bp->next;
- unlock(&arena);
-
- if(bp->magic != 0 || bp->size != pow)
+ if(bp->magic != 0 || bp->size != pow){
+ unlock(&arena);
panic("malloc bp %lux magic %lux size %d next %lux pow %d", bp,
bp->magic, bp->size, bp->next, pow);
-
+ }
bp->magic = Magic2n;
+ unlock(&arena);
memset(bp->data, 0, size);
return bp->data;
@@ 314,9 314,7 @@ good:
if(bp == nil)
return nil;
- lock(&arena);
arena.nbuck[pow]++;
- unlock(&arena);
}
bp->size = pow;
M power/l.s => power/l.s +2 -1
@@ 128,11 128,12 @@ TEXT spllo(SB), $0
TEXT muxlock(SB),$0
MOVW R1, R2 /* sbsem */
- MOVW 4(FP), R3 /* lk->val */
+ MOVW 4(FP), R3 /* &lk->val */
MOVW M(STATUS), R5 /* splhi */
AND $~IEC, R5, R4
MOVW R4, M(STATUS)
+ NOOP
MOVW 0(R2),R4 /* grab sbsem */
AND $1, R4