WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [linux-2.6.18-xen] xenbus: fix type inconsistency with x

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [linux-2.6.18-xen] xenbus: fix type inconsistency with xenbus_conn()
From: Xen patchbot-linux-2.6.18-xen <patchbot@xxxxxxx>
Date: Sat, 02 Apr 2011 16:05:11 +0100
Delivery-date: Sat, 02 Apr 2011 08:05:22 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxxxx>
# Date 1301756069 -3600
# Node ID 0bee20f8e418d32ab5828eb57c7542ca27ce425d
# Parent  8fe973d8fb987640dff885169bc64c7e7be3a772
xenbus: fix type inconsistency with xenbus_conn()

Its (bogus) declaration in xenbus_dev.c was inconsistent with the
actual implementation, leaving room for stack corruption on 64-bit
systems. Thus move the declaration to a header included by both
parties, and use proper types for the parameters.

Additionally, the function is needed on privileged kernels only, and
hence neither the potentially forward-incompatible HAVE_UNLOCKED_IOCTL
conditionals in xenbus_dev.c are needed, nor does the function (and
its helper) need to be compiled in unprivileged builds.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---


diff -r 8fe973d8fb98 -r 0bee20f8e418 drivers/xen/xenbus/xenbus_comms.h
--- a/drivers/xen/xenbus/xenbus_comms.h Fri Mar 11 16:18:59 2011 +0000
+++ b/drivers/xen/xenbus/xenbus_comms.h Sat Apr 02 15:54:29 2011 +0100
@@ -59,4 +59,11 @@
        return s == XENBUS_XSD_FOREIGN_READY || s == XENBUS_XSD_LOCAL_READY;
 }
 
+#if defined(CONFIG_XEN_XENBUS_DEV) && defined(CONFIG_XEN_PRIVILEGED_GUEST)
+#include <xen/interface/event_channel.h>
+#include <xen/interface/grant_table.h>
+
+int xenbus_conn(domid_t, grant_ref_t *, evtchn_port_t *);
+#endif
+
 #endif /* _XENBUS_COMMS_H */
diff -r 8fe973d8fb98 -r 0bee20f8e418 drivers/xen/xenbus/xenbus_dev.c
--- a/drivers/xen/xenbus/xenbus_dev.c   Fri Mar 11 16:18:59 2011 +0000
+++ b/drivers/xen/xenbus/xenbus_dev.c   Sat Apr 02 15:54:29 2011 +0100
@@ -395,12 +395,10 @@
        return 0;
 }
 
-#ifdef HAVE_UNLOCKED_IOCTL
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
 static long xenbus_dev_ioctl(struct file *file,
                              unsigned int cmd, unsigned long data)
 {
-       extern int xenbus_conn(domid_t remote_dom, int *grant_ref,
-                              evtchn_port_t *local_port);
        void __user *udata = (void __user *) data;
        int ret = -ENOTTY;
        
@@ -453,7 +451,7 @@
        .open = xenbus_dev_open,
        .release = xenbus_dev_release,
        .poll = xenbus_dev_poll,
-#ifdef HAVE_UNLOCKED_IOCTL
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
        .unlocked_ioctl = xenbus_dev_ioctl
 #endif
 };
diff -r 8fe973d8fb98 -r 0bee20f8e418 drivers/xen/xenbus/xenbus_probe.c
--- a/drivers/xen/xenbus/xenbus_probe.c Fri Mar 11 16:18:59 2011 +0000
+++ b/drivers/xen/xenbus/xenbus_probe.c Sat Apr 02 15:54:29 2011 +0100
@@ -871,7 +871,8 @@
 }
 
 
-#if defined(CONFIG_PROC_FS) && defined(CONFIG_XEN_PRIVILEGED_GUEST)
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+#ifdef CONFIG_PROC_FS
 static struct file_operations xsd_kva_fops;
 static struct proc_dir_entry *xsd_kva_intf;
 static struct proc_dir_entry *xsd_port_intf;
@@ -933,6 +934,7 @@
 }
 #endif
 
+#ifdef CONFIG_XEN_XENBUS_DEV
 static int xb_free_port(evtchn_port_t port)
 {
        struct evtchn_close close;
@@ -940,7 +942,8 @@
        return HYPERVISOR_event_channel_op(EVTCHNOP_close, &close);
 }
 
-int xenbus_conn(domid_t remote_dom, unsigned long *grant_ref, evtchn_port_t 
*local_port)
+int xenbus_conn(domid_t remote_dom, grant_ref_t *grant_ref,
+               evtchn_port_t *local_port)
 {
        struct evtchn_alloc_unbound alloc_unbound;
        int rc, rc2;
@@ -948,10 +951,8 @@
        BUG_ON(atomic_read(&xenbus_xsd_state) != XENBUS_XSD_FOREIGN_INIT);
        BUG_ON(!is_initial_xendomain());
 
-#if defined(CONFIG_PROC_FS) && defined(CONFIG_XEN_PRIVILEGED_GUEST)
        remove_xen_proc_entry("xsd_kva");
        remove_xen_proc_entry("xsd_port");
-#endif
 
        rc = xb_free_port(xen_store_evtchn);
        if (rc != 0)
@@ -988,6 +989,8 @@
        xen_store_evtchn = -1;
        return rc;
 }
+#endif
+#endif /* CONFIG_XEN_PRIVILEGED_GUEST */
 
 static int xenbus_probe_init(void)
 {

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [linux-2.6.18-xen] xenbus: fix type inconsistency with xenbus_conn(), Xen patchbot-linux-2 . 6 . 18-xen <=