diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 6f170b281e85dd90799602671863c65cfaafa447..06e99c785155a2d706c82e274bafb2d8a0da7a9d 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -901,6 +901,7 @@ static struct hda_cache_head  *get_alloc_hash(struct hda_cache_rec *cache,
 	info = snd_array_new(&cache->buf);
 	if (!info)
 		return NULL;
+	cur = cache->buf.used - 1; /* the last entry */
 	info->key = key;
 	info->val = 0;
 	info->next = cache->hash[idx];