Siliently ignore all vmalloc area holes in vwrite(), and report success to the caller even if nothing is written. CC: KAMEZAWA Hiroyuki Signed-off-by: Wu Fengguang --- mm/vmalloc.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) --- linux-mm.orig/mm/vmalloc.c 2009-09-15 10:08:33.000000000 +0800 +++ linux-mm/mm/vmalloc.c 2009-09-15 10:14:18.000000000 +0800 @@ -1805,10 +1805,8 @@ finished: * @addr: vm address. * @count: number of bytes to be read. * - * Returns # of bytes which addr and buf should be incresed. + * Returns # of bytes which addr and buf should be increased. * (same number to @count). - * If [addr...addr+count) doesn't includes any intersect with valid - * vmalloc area, returns 0. * * This function checks that addr is a valid vmalloc'ed area, and * copy data from a buffer to the given addr. If specified range of @@ -1816,8 +1814,6 @@ finished: * proper area of @buf. If there are memory holes, no copy to hole. * IOREMAP area is treated as memory hole and no copy is done. * - * If [addr...addr+count) doesn't includes any intersects with alive - * vm_struct area, returns 0. * @buf should be kernel's buffer. Because this function uses KM_USER0, * the caller should guarantee KM_USER0 is not used. * @@ -1834,7 +1830,6 @@ long vwrite(char *buf, char *addr, unsig struct vm_struct *tmp; char *vaddr; unsigned long n, buflen; - int copied = 0; /* Don't allow overflow */ if ((unsigned long) addr + count < count) @@ -1856,18 +1851,14 @@ long vwrite(char *buf, char *addr, unsig n = vaddr + tmp->size - PAGE_SIZE - addr; if (n > count) n = count; - if (!(tmp->flags & VM_IOREMAP)) { + if (!(tmp->flags & VM_IOREMAP)) aligned_vwrite(buf, addr, n); - copied++; - } buf += n; addr += n; count -= n; } finished: read_unlock(&vmlist_lock); - if (!copied) - return 0; return buflen; } -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/