2004-09-14 18:43:11

by Jeff Dike

[permalink] [raw]
Subject: [PATCH] - UML - iomem fix

This patch rounds up the size of a file used for iomem emulation up to the
nearest page. This makes mmap work much better on the last page of the
file.

Signed-off-by: Jeff Dike <[email protected]>

Index: 2.6.9-rc2/arch/um/kernel/mem_user.c
===================================================================
--- 2.6.9-rc2.orig/arch/um/kernel/mem_user.c 2004-09-14 13:43:32.000000000 -0400
+++ 2.6.9-rc2/arch/um/kernel/mem_user.c 2004-09-14 13:53:25.000000000 -0400
@@ -143,7 +143,7 @@
struct iomem_region *new;
struct uml_stat buf;
char *file, *driver;
- int fd, err;
+ int fd, err, size;

driver = str;
file = strchr(str,',');
@@ -171,10 +171,12 @@
goto out_close;
}

+ size = (buf.ust_size + UM_KERN_PAGE_SIZE) & ~(UM_KERN_PAGE_SIZE - 1);
+
*new = ((struct iomem_region) { .next = iomem_regions,
.driver = driver,
.fd = fd,
- .size = buf.ust_size,
+ .size = size,
.phys = 0,
.virt = 0 });
iomem_regions = new;