DEC Ewrk3 problems with 1.3.6

davies@wanton.lkg.dec.com
Wed, 05 Jul 95 15:53:07 -0400


Here's the patch....

--- /linux/drivers/net/ewrk3.c Wed Jul 5 15:43:50 1995
+++ ewrk3.c Wed Jul 5 15:43:41 1995
@@ -1036,17 +1036,16 @@
struct sk_buff *skb;

if ((skb = dev_alloc_skb(pkt_len)) != NULL) {
+ unsigned char *p = skb_put(skb,pkt_len);
skb->dev = dev;

if (lp->shmem_length == IO_ONLY) {
- unsigned char *p = skb_put(skb,pkt_len);
-
*p = inb(EWRK3_DATA); /* dummy read */
for (i=0; i<skb->len; i++) {
*p++ = inb(EWRK3_DATA);
}
} else {
- memcpy(skb->data, buf, pkt_len);
+ memcpy(p, buf, pkt_len);
}

/*
@@ -1731,7 +1730,7 @@

break;
case EWRK3_GET_STATS: /* Get the driver statistics */
- err = verify_area(VERIFY_WRITE, (void *)ioc->data, sizeof(lp->pktStats)));
+ err = verify_area(VERIFY_WRITE, (void *)ioc->data, sizeof(lp->pktStats));
if (err) return err;

cli();
@@ -1879,6 +1878,7 @@
if (MOD_IN_USE) {
printk("%s: device busy, remove delayed\n",thisEthwrk.name);
} else {
+ release_region(thisEthwrk.base_addr, EWRK3_TOTAL_SIZE);
unregister_netdev(&thisEthwrk);
}
}