diff --git a/lib/idr.c b/lib/idr.c
index f4ab4f4aa3c7f5b269dcd1917c65f15f03d2475a..7ecdfdb5309e749b626a7b3db925c20b7846365f 100644
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -491,7 +491,8 @@ void ida_free(struct ida *ida, unsigned int id)
 	struct ida_bitmap *bitmap;
 	unsigned long flags;
 
-	BUG_ON((int)id < 0);
+	if ((int)id < 0)
+		return;
 
 	xas_lock_irqsave(&xas, flags);
 	bitmap = xas_load(&xas);