Index: uspace/drv/bus/usb/xhci/endpoint.c
===================================================================
--- uspace/drv/bus/usb/xhci/endpoint.c	(revision f92f6b18d7397c30335816ae68fd361da3a72401)
+++ uspace/drv/bus/usb/xhci/endpoint.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
@@ -429,5 +429,4 @@
 
 	usb_transfer_type_t tt = ep->base.transfer_type;
-	assert(tt < ARRAY_SIZE(setup_ep_ctx_helpers));
 
 	memset(ep_ctx, 0, sizeof(*ep_ctx));
Index: uspace/drv/bus/usb/xhci/hw_struct/trb.h
===================================================================
--- uspace/drv/bus/usb/xhci/hw_struct/trb.h	(revision f92f6b18d7397c30335816ae68fd361da3a72401)
+++ uspace/drv/bus/usb/xhci/hw_struct/trb.h	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
@@ -96,5 +96,5 @@
 	xhci_dword_t status;
 	xhci_dword_t control;
-} __attribute__((packed)) xhci_trb_t;
+} __attribute__((packed)) __attribute__((aligned(16))) xhci_trb_t;
 
 #define TRB_TYPE(trb)           XHCI_DWORD_EXTRACT((trb).control, 15, 10)
Index: uspace/drv/bus/usb/xhci/transfers.c
===================================================================
--- uspace/drv/bus/usb/xhci/transfers.c	(revision f92f6b18d7397c30335816ae68fd361da3a72401)
+++ uspace/drv/bus/usb/xhci/transfers.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
@@ -341,5 +341,4 @@
 
 	const usb_transfer_type_t type = batch->ep->transfer_type;
-	assert(type >= 0 && type < ARRAY_SIZE(transfer_handlers));
 	assert(transfer_handlers[type]);
 
Index: uspace/drv/bus/usb/xhci/trb_ring.c
===================================================================
--- uspace/drv/bus/usb/xhci/trb_ring.c	(revision f92f6b18d7397c30335816ae68fd361da3a72401)
+++ uspace/drv/bus/usb/xhci/trb_ring.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
@@ -151,4 +151,5 @@
 	if (!next_segment)
 		next_segment = list_first(&ring->segments);
+	assert(next_segment);
 
 	ring->enqueue_segment = list_get_instance(next_segment, trb_segment_t, segments_link);
@@ -207,5 +208,5 @@
 	xhci_trb_t *trb = first_trb;
 	for (size_t i = 0; i < trbs; ++i, ++trb) {
-		if (trb_generates_interrupt(trb)) {
+		if (phys && trb_generates_interrupt(trb)) {
 			if (*phys)
 				return ENOTSUP;
Index: uspace/lib/usbhost/src/dma_buffer.c
===================================================================
--- uspace/lib/usbhost/src/dma_buffer.c	(revision f92f6b18d7397c30335816ae68fd361da3a72401)
+++ uspace/lib/usbhost/src/dma_buffer.c	(revision 4a00bc9f49d58b390c4941c5ba92c9d636d4d229)
@@ -62,5 +62,5 @@
 	const size_t aligned_size = ALIGN_UP(size, policy.alignment);
 	const size_t real_size = ALIGN_UP(aligned_size, PAGE_SIZE);
-	const int flags = policy.use64 ? 0 : DMAMEM_4GiB;
+	const uintptr_t flags = policy.use64 ? 0 : DMAMEM_4GiB;
 
 	uintptr_t phys;
