Index: kernel/generic/src/cap/cap.c
===================================================================
--- kernel/generic/src/cap/cap.c	(revision 9fc776c77e73f9b1550d50810a94c88df45e3682)
+++ kernel/generic/src/cap/cap.c	(revision cbb37b60574b56acd864c01b9afca6a0ce28867f)
@@ -92,5 +92,5 @@
 {
 	cap_t *cap = hash_table_get_inst(item, cap_t, caps_link);
-	return hash_mix(cap->handle);
+	return hash_mix(CAP_HANDLE_RAW(cap->handle));
 }
 
@@ -98,5 +98,5 @@
 {
 	cap_handle_t *handle = (cap_handle_t *) key;
-	return hash_mix(*handle);
+	return hash_mix(CAP_HANDLE_RAW(*handle));
 }
 
@@ -224,5 +224,6 @@
 	assert(mutex_locked(&task->cap_info->lock));
 
-	if ((handle < CAPS_START) || (handle > CAPS_LAST))
+	if ((CAP_HANDLE_RAW(handle) < CAPS_START) ||
+	    (CAP_HANDLE_RAW(handle) > CAPS_LAST))
 		return NULL;
 	ht_link_t *link = hash_table_find(&task->cap_info->caps, &handle);
@@ -329,6 +330,6 @@
 void cap_free(task_t *task, cap_handle_t handle)
 {
-	assert(handle >= CAPS_START);
-	assert(handle <= CAPS_LAST);
+	assert(CAP_HANDLE_RAW(handle) >= CAPS_START);
+	assert(CAP_HANDLE_RAW(handle) <= CAPS_LAST);
 
 	mutex_lock(&task->cap_info->lock);
@@ -338,5 +339,5 @@
 
 	hash_table_remove_item(&task->cap_info->caps, &cap->caps_link);
-	ra_free(task->cap_info->handles, handle, 1);
+	ra_free(task->cap_info->handles, CAP_HANDLE_RAW(handle), 1);
 	slab_free(cap_cache, cap);
 	mutex_unlock(&task->cap_info->lock);
