work around for skbuff_ctor() on non-privileged domain
populate physmap/increase reservation hypercall fail with
extent order > 0 on non-privileged domain.

-- 
yamahata
# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID e9ad96356afba6e2a7c30fcff7efef008345723a
# Parent  49b93835c261a6e74c7c51c16be9269511732d43
work around for skbuff_ctor() on non-privileged domain
populate physmap/increase reservation hypercall fail with
extent order > 0 on non-privileged domain.
PATCHNAME: work_around_for_skbuff_ctor

Signed-off-by: Isaku Yamahata <[EMAIL PROTECTED]>

diff -r 49b93835c261 -r e9ad96356afb 
linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c
--- a/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c   Thu Jun 15 18:47:31 
2006 +0900
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c   Thu Jun 15 19:35:49 
2006 +0900
@@ -76,6 +76,15 @@ ia64_xenmem_reservation_op(unsigned long
                        }
                        break;
                }
+               if (tmp_ret == 0) {
+                       //XXX dirty work around for skbuff_ctor()
+                       //    of a non-privileged domain, 
+                       if ((op == XENMEM_increase_reservation ||
+                            op == XENMEM_populate_physmap) &&
+                           !(xen_start_info->flags & SIF_PRIVILEGED) &&
+                           reservation.extent_order > 0)
+                               return ret;
+               }
                frame_list += tmp_ret;
                nr_extents -= tmp_ret;
                ret += tmp_ret;
@@ -165,7 +174,12 @@ HYPERVISOR_populate_physmap(unsigned lon
         };
        set_xen_guest_handle(reservation.extent_start, &gpfn);
        ret = HYPERVISOR_memory_op(XENMEM_populate_physmap, &reservation);
-       BUG_ON(ret != 1);
+       // it may fail on non-privileged domain with extent_order > 0.
+       BUG_ON(ret != 1 &&
+              !(ret == 0 && !(xen_start_info->flags & SIF_PRIVILEGED) &&
+                extent_order > 0));
+       if (ret != 1)
+               return -EINVAL;//XXX
        return 0;
 }
 
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to