Loading drivers/net/wan/farsync.c +12 −5 Original line number Diff line number Diff line Loading @@ -2024,6 +2024,7 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) struct fstioc_write wrthdr; struct fstioc_info info; unsigned long flags; void *buf; dbg(DBG_IOCTL, "ioctl: %x, %p\n", cmd, ifr->ifr_data); Loading Loading @@ -2065,16 +2066,22 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) return -ENXIO; } /* Now copy the data to the card. * This will probably break on some architectures. * I'll fix it when I have something to test on. */ if (copy_from_user(card->mem + wrthdr.offset, /* Now copy the data to the card. */ buf = kmalloc(wrthdr.size, GFP_KERNEL); if (!buf) return -ENOMEM; if (copy_from_user(buf, ifr->ifr_data + sizeof (struct fstioc_write), wrthdr.size)) { kfree(buf); return -EFAULT; } memcpy_toio(card->mem + wrthdr.offset, buf, wrthdr.size); kfree(buf); /* Writes to the memory of a card in the reset state constitute * a download */ Loading Loading
drivers/net/wan/farsync.c +12 −5 Original line number Diff line number Diff line Loading @@ -2024,6 +2024,7 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) struct fstioc_write wrthdr; struct fstioc_info info; unsigned long flags; void *buf; dbg(DBG_IOCTL, "ioctl: %x, %p\n", cmd, ifr->ifr_data); Loading Loading @@ -2065,16 +2066,22 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) return -ENXIO; } /* Now copy the data to the card. * This will probably break on some architectures. * I'll fix it when I have something to test on. */ if (copy_from_user(card->mem + wrthdr.offset, /* Now copy the data to the card. */ buf = kmalloc(wrthdr.size, GFP_KERNEL); if (!buf) return -ENOMEM; if (copy_from_user(buf, ifr->ifr_data + sizeof (struct fstioc_write), wrthdr.size)) { kfree(buf); return -EFAULT; } memcpy_toio(card->mem + wrthdr.offset, buf, wrthdr.size); kfree(buf); /* Writes to the memory of a card in the reset state constitute * a download */ Loading