Skip to contentSkip to conversation

: Blktap backend fixes

PATCH New Chris Lalancette 1 participant 1 message Jun 23, 2008 Xen hypervisor interface

lore
Share & tools
lore
#0 lore raw

PATCH 2/5 : Blktap backend fixes

This simple patch puts two fixes into the blktap backend. The first is a change of busid from an unsigned short to a u32 so we can accommodate the new expanded format (which doesn't fit into 16-bits). The second is a minor fix to signal_tapdisk(); while developing, if the tools happen to set up the tapfds wrong, you can get into a situation where the idx passed to signal_tapdisk() is NULL, causing a kernel OOPS. The fix for signal_tapdisk() just returns if the idx is negative, preventing the crash.

drivers/xen/blktap/blktap.c +8 -1
diff -r 5201a184f513 drivers/xen/blktap/blktap.c
@@ -89,7 +89,7 @@ static int mmap_pages = MMAP_PAGES;
 /*Data struct handed back to userspace for tapdisk device to VBD mapping*/
 typedef struct domid_translate {
 	unsigned short domid;
-	unsigned short busid;
+	u32 busid;
 } domid_translate_t ;
 
 /*Data struct associated with each of the tapdisk devices*/
@@ -507,6 +507,13 @@ void signal_tapdisk(int idx)
 {
 	tap_blkif_t *info;
 	struct task_struct *ptask;
+
+	/*
+	 * if the userland tools set things up wrong, this could be negative;
+	 * just don't try to signal in this case
+	 */
+	if (idx < 0)
+		return;
 
 	info = tapfds[idx];
 	if ((idx < 0) || (idx > MAX_TAP_DEV) || !info)

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel