diff --git a/block/bsg.c b/block/bsg.c
index 2f78d7d34b9deecbb712b2e7c1cff028e380cc17..5f4abc902a009f5c320e0ac8b72365ba2087f353 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -471,6 +471,7 @@ static int bsg_complete_all_commands(struct bsg_device *bd)
 			spin_unlock_irq(&bd->lock);
 			break;
 		}
+		spin_unlock_irq(&bd->lock);
 
 		bc = bsg_get_done_cmd(bd);
 		if (IS_ERR(bc))