Index: kernel/genarch/src/mm/page_ht.c
===================================================================
--- kernel/genarch/src/mm/page_ht.c	(revision f35749ea567f56991e775945db2ae2ded40751e6)
+++ kernel/genarch/src/mm/page_ht.c	(revision 93de3843ffaa4f5998c74e2074d88a32d88800e2)
@@ -55,5 +55,5 @@
 static size_t ht_hash(const ht_link_t *);
 static size_t ht_key_hash(const void *);
-static bool ht_key_equal(const void *, const ht_link_t *);
+static bool ht_key_equal(const void *, size_t, const ht_link_t *);
 static void ht_remove_callback(ht_link_t *);
 
@@ -119,5 +119,5 @@
 
 /** Return true if the key is equal to the item's lookup key. */
-bool ht_key_equal(const void *arg, const ht_link_t *item)
+bool ht_key_equal(const void *arg, size_t hash, const ht_link_t *item)
 {
 	const uintptr_t *key = arg;
Index: kernel/generic/src/cap/cap.c
===================================================================
--- kernel/generic/src/cap/cap.c	(revision f35749ea567f56991e775945db2ae2ded40751e6)
+++ kernel/generic/src/cap/cap.c	(revision 93de3843ffaa4f5998c74e2074d88a32d88800e2)
@@ -118,5 +118,5 @@
 }
 
-static bool caps_key_equal(const void *key, const ht_link_t *item)
+static bool caps_key_equal(const void *key, size_t hash, const ht_link_t *item)
 {
 	const cap_handle_t *handle = key;
Index: kernel/generic/src/ddi/irq.c
===================================================================
--- kernel/generic/src/ddi/irq.c	(revision f35749ea567f56991e775945db2ae2ded40751e6)
+++ kernel/generic/src/ddi/irq.c	(revision 93de3843ffaa4f5998c74e2074d88a32d88800e2)
@@ -75,5 +75,5 @@
 static size_t irq_ht_key_hash(const void *);
 static bool irq_ht_equal(const ht_link_t *, const ht_link_t *);
-static bool irq_ht_key_equal(const void *, const ht_link_t *);
+static bool irq_ht_key_equal(const void *, size_t, const ht_link_t *);
 
 static const hash_table_ops_t irq_ht_ops = {
@@ -141,8 +141,6 @@
 {
 	irq_spinlock_lock(l, false);
-	ht_link_t *first = hash_table_find(h, &inr);
-	for (ht_link_t *lnk = first; lnk;
-	    lnk = hash_table_find_next(h, first, lnk)) {
-		irq_t *irq = hash_table_get_inst(lnk, irq_t, link);
+
+	hash_table_foreach(h, &inr, link, irq_t, irq) {
 		irq_spinlock_lock(&irq->lock, false);
 		if (irq->claim(irq) == IRQ_ACCEPT) {
@@ -153,4 +151,5 @@
 		irq_spinlock_unlock(&irq->lock, false);
 	}
+
 	irq_spinlock_unlock(l, false);
 
@@ -223,5 +222,5 @@
 
 /** Return true if the key is equal to the item's lookup key. */
-bool irq_ht_key_equal(const void *key, const ht_link_t *item)
+bool irq_ht_key_equal(const void *key, size_t hash, const ht_link_t *item)
 {
 	const inr_t *inr = key;
Index: kernel/generic/src/lib/ra.c
===================================================================
--- kernel/generic/src/lib/ra.c	(revision f35749ea567f56991e775945db2ae2ded40751e6)
+++ kernel/generic/src/lib/ra.c	(revision 93de3843ffaa4f5998c74e2074d88a32d88800e2)
@@ -74,5 +74,5 @@
 
 /** Return true if the key is equal to the item's lookup key */
-static bool used_key_equal(const void *key, const ht_link_t *item)
+static bool used_key_equal(const void *key, size_t, const ht_link_t *item)
 {
 	const uintptr_t *base = key;
