diff --git a/scst/src/dev_handlers/scst_user.c b/scst/src/dev_handlers/scst_user.c index aaf720d03..3724b8640 100644 --- a/scst/src/dev_handlers/scst_user.c +++ b/scst/src/dev_handlers/scst_user.c @@ -3576,13 +3576,12 @@ static int dev_user_process_cleanup(struct scst_user_dev *dev) int i; for (i = 0; i < (int)ARRAY_SIZE(dev->ucmd_hash); i++) { struct list_head *head = &dev->ucmd_hash[i]; - struct scst_user_cmd *ucmd2; -again: - list_for_each_entry(ucmd2, head, hash_list_entry) { + struct scst_user_cmd *ucmd2, *tmp; + + list_for_each_entry_safe(ucmd2, tmp, head, hash_list_entry) { PRINT_ERROR("Lost ucmd %p (state %x, ref %d)", ucmd2, ucmd2->state, atomic_read(&ucmd2->ucmd_ref)); ucmd_put(ucmd2); - goto again; } } }