don't use a bogus pointer if packblock reallocates Reference: /n/atom/patch/applied/nixetherusbpack Date: Sun Jan 3 03:17:52 CET 2016 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/k10/etherusb.c Sun Jan 3 03:17:07 2016 +++ /sys/src/nix/k10/etherusb.c Sun Jan 3 03:17:08 2016 @@ -125,7 +125,7 @@ static int unpackasix(Ether *edev, Block *b) { - ulong hd; + u32int hd; int m; uchar *wp; @@ -148,7 +148,7 @@ static int unpacksmsc(Ether *edev, Block *b) { - ulong hd; + u32int hd; int m; ddump('@', b); @@ -198,10 +198,10 @@ n = BLEN(b) & 0xFFFF; n |= ~n << 16; - padblock(b, 4); + b = padblock(b, 4); PUT4(b->rp, n); if(BLEN(b) % ctlr->maxpkt == 0){ - padblock(b, -4); + b = padblock(b, -4); PUT4(b->wp, 0xFFFF0000); b->wp += 4; } @@ -214,7 +214,7 @@ int n; n = BLEN(b) & 0x7FF; - padblock(b, 8); + b = padblock(b, 8); PUT4(b->rp, n | SmscTxfirst | SmscTxlast); PUT4(b->rp+4, n); transmit(ctlr, b); @@ -320,7 +320,7 @@ } static long -etherusbifstat(Ether* edev, void* a, long n, ulong offset) +etherusbifstat(Ether* edev, void* a, long n, usize offset) { char *s, *p, *e; Ctlr *ctlr; @@ -411,6 +411,11 @@ ctlr->edev = edev; } +static void +etherusbshutdown(Ether*) +{ +} + static int etherusbpnp(Ether* edev) { @@ -429,6 +434,7 @@ edev->transmit = etherusbtransmit; edev->ifstat = etherusbifstat; edev->ctl = etherusbctl; + edev->shutdown = etherusbshutdown; return 0; }