Index: uspace/drv/uhci-hcd/utils/device_keeper.c
===================================================================
--- uspace/drv/uhci-hcd/utils/device_keeper.c	(revision f0a1c86a95a51d40726fd5e249e358b38486bc75)
+++ uspace/drv/uhci-hcd/utils/device_keeper.c	(revision 171cd8807faa358a638aa96f6a3e8ed1290ed44f)
@@ -179,7 +179,9 @@
 	} else {
 		if (toggle) {
-			instance->devices[target.address].toggle_status |= (1 << target.endpoint);
+			instance->devices[target.address].toggle_status |=
+			    (1 << target.endpoint);
 		} else {
-			instance->devices[target.address].toggle_status &= ~(1 << target.endpoint);
+			instance->devices[target.address].toggle_status &=
+			    ~(1 << target.endpoint);
 		}
 		ret = EOK;
@@ -201,14 +203,14 @@
 	fibril_mutex_lock(&instance->guard);
 
-	usb_address_t new_address = instance->last_address + 1;
-	while (instance->devices[new_address].occupied) {
+	usb_address_t new_address = instance->last_address;
+	do {
+		++new_address;
+		if (new_address > USB11_ADDRESS_MAX)
+			new_address = 1;
 		if (new_address == instance->last_address) {
 			fibril_mutex_unlock(&instance->guard);
 			return ENOSPC;
 		}
-		if (new_address == USB11_ADDRESS_MAX)
-			new_address = 1;
-		++new_address;
-	}
+	} while (instance->devices[new_address].occupied);
 
 	assert(new_address != USB_ADDRESS_DEFAULT);
