Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.4.17-pre8 /mm/vmalloc.c

Filename:/mm/vmalloc.c
Lines Added:38
Lines Deleted:0
Also changed in: (Previous) 2.4.17-pre7  2.4.17-pre6  2.4.13-ac8  2.4.13-ac7  2.4.13-ac6  2.4.13-ac5 
(Following) 2.4.17-rc1  2.4.17-rc2  2.4.17  2.4.18-pre3  2.4.18-pre4  2.4.18-pre5 

Location
[  2.4.17-pre8
  [  mm
     o  vmalloc.c

Patch

diff -Naur -X /home/marcelo/lib/dontdiff linux-2.4.16/mm/vmalloc.c linux/mm/vmalloc.c
--- linux-2.4.16/mm/vmalloc.c   Mon Nov 26 10:35:00 2001
+++ linux/mm/vmalloc.c   Thu Dec  6 20:33:49 2001
@@ -6,6 +6,7 @@
  *  SMP-safe vmalloc/vfree/ioremap, Tigran Aivazian <tigran@veritas.com>, May 2000
  */
 
+#include <linux/config.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
 #include <linux/spinlock.h>
@@ -273,6 +274,43 @@
          if (count == 0)
             goto finished;
          *buf = *addr;
+         buf++;
+         addr++;
+         count--;
+      } while (--n > 0);
+   }
+finished:
+   read_unlock(&vmlist_lock);
+   return buf - buf_start;
+}
+
+long vwrite(char *buf, char *addr, unsigned long count)
+{
+   struct vm_struct *tmp;
+   char *vaddr, *buf_start = buf;
+   unsigned long n;
+
+   /* Don't allow overflow */
+   if ((unsigned long) addr + count < count)
+      count = -(unsigned long) addr;
+
+   read_lock(&vmlist_lock);
+   for (tmp = vmlist; tmp; tmp = tmp->next) {
+      vaddr = (char *) tmp->addr;
+      if (addr >= vaddr + tmp->size - PAGE_SIZE)
+         continue;
+      while (addr < vaddr) {
+         if (count == 0)
+            goto finished;
+         buf++;
+         addr++;
+         count--;
+      }
+      n = vaddr + tmp->size - PAGE_SIZE - addr;
+      do {
+         if (count == 0)
+            goto finished;
+         *addr = *buf;
          buf++;
          addr++;
          count--;


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.