Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for-linus-4.16a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fixes from Juergen Gross:
"Five minor fixes for Xen-specific drivers"

* tag 'for-linus-4.16a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
pvcalls-front: 64-bit align flags
x86/xen: add tty0 and hvc0 as preferred consoles for dom0
xen-netfront: Fix hang on device removal
xen/pirq: fix error path cleanup when binding MSIs
xen/pvcalls: fix null pointer dereference on map->sock

+21 -9
+4 -2
arch/x86/xen/enlighten_pv.c
··· 1376 1376 1377 1377 if (!xen_initial_domain()) { 1378 1378 add_preferred_console("xenboot", 0, NULL); 1379 - add_preferred_console("tty", 0, NULL); 1380 - add_preferred_console("hvc", 0, NULL); 1381 1379 if (pci_xen) 1382 1380 x86_init.pci.arch_init = pci_xen_init; 1383 1381 } else { ··· 1408 1410 1409 1411 xen_boot_params_init_edd(); 1410 1412 } 1413 + 1414 + add_preferred_console("tty", 0, NULL); 1415 + add_preferred_console("hvc", 0, NULL); 1416 + 1411 1417 #ifdef CONFIG_PCI 1412 1418 /* PCI BIOS service won't work from a PV guest. */ 1413 1419 pci_probe &= ~PCI_PROBE_BIOS;
+6 -1
drivers/net/xen-netfront.c
··· 2005 2005 case XenbusStateInitialised: 2006 2006 case XenbusStateReconfiguring: 2007 2007 case XenbusStateReconfigured: 2008 + break; 2009 + 2008 2010 case XenbusStateUnknown: 2011 + wake_up_all(&module_unload_q); 2009 2012 break; 2010 2013 2011 2014 case XenbusStateInitWait: ··· 2139 2136 xenbus_switch_state(dev, XenbusStateClosing); 2140 2137 wait_event(module_unload_q, 2141 2138 xenbus_read_driver_state(dev->otherend) == 2142 - XenbusStateClosing); 2139 + XenbusStateClosing || 2140 + xenbus_read_driver_state(dev->otherend) == 2141 + XenbusStateUnknown); 2143 2142 2144 2143 xenbus_switch_state(dev, XenbusStateClosed); 2145 2144 wait_event(module_unload_q,
+2 -2
drivers/xen/events/events_base.c
··· 755 755 mutex_unlock(&irq_mapping_update_lock); 756 756 return irq; 757 757 error_irq: 758 - for (; i >= 0; i--) 759 - __unbind_from_irq(irq + i); 758 + while (nvec--) 759 + __unbind_from_irq(irq + nvec); 760 760 mutex_unlock(&irq_mapping_update_lock); 761 761 return ret; 762 762 }
+1 -1
drivers/xen/pvcalls-back.c
··· 416 416 sock); 417 417 if (!map) { 418 418 ret = -EFAULT; 419 - sock_release(map->sock); 419 + sock_release(sock); 420 420 } 421 421 422 422 out:
+8 -3
drivers/xen/pvcalls-front.c
··· 73 73 wait_queue_head_t inflight_conn_req; 74 74 } active; 75 75 struct { 76 - /* Socket status */ 76 + /* 77 + * Socket status, needs to be 64-bit aligned due to the 78 + * test_and_* functions which have this requirement on arm64. 79 + */ 77 80 #define PVCALLS_STATUS_UNINITALIZED 0 78 81 #define PVCALLS_STATUS_BIND 1 79 82 #define PVCALLS_STATUS_LISTEN 2 80 - uint8_t status; 83 + uint8_t status __attribute__((aligned(8))); 81 84 /* 82 85 * Internal state-machine flags. 83 86 * Only one accept operation can be inflight for a socket. 84 87 * Only one poll operation can be inflight for a given socket. 88 + * flags needs to be 64-bit aligned due to the test_and_* 89 + * functions which have this requirement on arm64. 85 90 */ 86 91 #define PVCALLS_FLAG_ACCEPT_INFLIGHT 0 87 92 #define PVCALLS_FLAG_POLL_INFLIGHT 1 88 93 #define PVCALLS_FLAG_POLL_RET 2 89 - uint8_t flags; 94 + uint8_t flags __attribute__((aligned(8))); 90 95 uint32_t inflight_req_id; 91 96 struct sock_mapping *accept_map; 92 97 wait_queue_head_t inflight_accept_req;