Index: uspace/lib/usb/src/host/device_keeper.c
===================================================================
--- uspace/lib/usb/src/host/device_keeper.c	(revision e484f3bc4ace4485b9e6e4743fdc54e23d797742)
+++ uspace/lib/usb/src/host/device_keeper.c	(revision 62ed5bc1bda7bdd1be1c735c399c3b3be035c1b1)
@@ -214,14 +214,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);
