[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [XEN][POWERPC] Fix allocation error for xencomm "mini" descriptors.



# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Node ID 88fb77ac4f091659c1fdf74ebbaca1a9cdd3871c
# Parent  fcc0efacc17a894d8bbb3f1878fe878bf005f8e9
[XEN][POWERPC] Fix allocation error for xencomm "mini" descriptors.

Previous code worked correctly only if the allocated structure fit in the same
page as the base address. If the structure did not fit, the computation for the
allocation was incorrect. Noticed by Kiyokuni KAWACHIYA <KAWATIYA@xxxxxxxxxx>.

Signed-off-by: Maria Butrico <butrico@xxxxxxxxxxxxxx>
Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx>
---
 xen/arch/powerpc/of_handler/xencomm.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff -r fcc0efacc17a -r 88fb77ac4f09 xen/arch/powerpc/of_handler/xencomm.c
--- a/xen/arch/powerpc/of_handler/xencomm.c     Fri Sep 08 10:22:45 2006 -0500
+++ b/xen/arch/powerpc/of_handler/xencomm.c     Fri Sep 08 10:23:56 2006 -0500
@@ -50,18 +50,18 @@ static void *__xencomm_alloc_mini(void *
 static void *__xencomm_alloc_mini(void *area, int arealen)
 {
     unsigned long base = (unsigned long)area;
-    unsigned int pageoffset;
+    unsigned int left_in_page;
 
-    pageoffset = base % PAGE_SIZE;
+    left_in_page = PAGE_SIZE - base % PAGE_SIZE;
 
     /* we probably fit right at the front of area */
-    if ((PAGE_SIZE - pageoffset) >= sizeof(struct xencomm_mini)) {
+    if (left_in_page >= sizeof(struct xencomm_mini)) {
         return area;
     }
 
     /* if not, see if area is big enough to advance to the next page */
-    if ((arealen - pageoffset) >= sizeof(struct xencomm_mini))
-        return (void *)(base + pageoffset);
+    if ((arealen - left_in_page) >= sizeof(struct xencomm_mini))
+        return (void *)(base + left_in_page);
 
     /* area was too small */
     return NULL;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.