diff -urbB vmnet-only.orig/driver.c vmnet-only/driver.c --- vmnet-only.orig/driver.c 2005-12-23 18:10:37.000000000 -0500 +++ vmnet-only/driver.c 2006-01-13 11:17:00.000000000 -0500 @@ -1393,7 +1393,11 @@ return FALSE; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) + for (fd = 0; fd < p->files->fdt->max_fds; fd++) { +#else for (fd = 0; fd < p->files->max_fds; fd++) { +#endif #ifdef KERNEL_2_3_99 file = fcheck_files(p->files, fd); #else diff -urbB vmnet-only.orig/userif.c vmnet-only/userif.c --- vmnet-only.orig/userif.c 2005-12-23 18:10:37.000000000 -0500 +++ vmnet-only/userif.c 2006-01-13 11:09:10.000000000 -0500 @@ -153,12 +153,21 @@ static INLINE int VNetUserIfMapUint32Ptr(VA uAddr, struct page **p, uint32 **ptr) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14) + if (access_ok(VERIFY_READ, (void *)uAddr, sizeof (uint32)) || + access_ok(VERIFY_WRITE, (void *)uAddr, sizeof (uint32)) || + (((uAddr + sizeof(uint32)) & ~(PAGE_SIZE - 1)) != + (uAddr & ~(PAGE_SIZE - 1)))) { + return -EINVAL; + } +#else if (verify_area(VERIFY_READ, (void *)uAddr, sizeof (uint32)) || verify_area(VERIFY_WRITE, (void *)uAddr, sizeof (uint32)) || (((uAddr + sizeof(uint32)) & ~(PAGE_SIZE - 1)) != (uAddr & ~(PAGE_SIZE - 1)))) { return -EINVAL; } +#endif *p = UserifLockPage(uAddr); if (*p == NULL) { @@ -560,7 +569,7 @@ u_int16_t csum16; skl = skb->h.raw - skb->data; - if (skb_copy_datagram(skb, 0, buf, skl)) { + if (skb_copy_datagram_iovec(skb, 0, buf, skl)) { return -EFAULT; } csum = VNetCsumCopyDatagram(skb, skl, buf + skl); @@ -572,7 +581,7 @@ return -EFAULT; } } else { - if (skb_copy_datagram(skb, 0, buf, count)) { + if (skb_copy_datagram_iovec(skb, 0, buf, count)) { return -EFAULT; } }