The bug is here: "if (dev == NULL)". The list iterator value will *always* be set and non-NULL by list_for_each_entry(), so it is incorrect to assume that the iterator value will be NULL if the list is empty. Instead, check with list_empty() and move the 'if' ahead, to fix this bug. Fixes: 4aabf6331f89c ("[PATCH] v4l: (951) Make saa7134-oss as a stand-alone module") Signed-off-by: Xiaomeng Tong <xiam0nd.tong@xxxxxxxxx> --- changes since v1: - check with list_empty() (Jakob Koschel) - and move the 'if' ahead (Xiaomeng Tong) v1:https://lore.kernel.org/all/20220320025718.10053-1-xiam0nd.tong@xxxxxxxxx/ --- drivers/media/pci/saa7134/saa7134-alsa.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/media/pci/saa7134/saa7134-alsa.c b/drivers/media/pci/saa7134/saa7134-alsa.c index fb24d2ed3621..4955f7e7c5bf 100644 --- a/drivers/media/pci/saa7134/saa7134-alsa.c +++ b/drivers/media/pci/saa7134/saa7134-alsa.c @@ -1215,18 +1215,21 @@ static int alsa_device_exit(struct saa7134_dev *dev) static int saa7134_alsa_init(void) { struct saa7134_dev *dev = NULL; + struct saa7134_dev *iter; saa7134_dmasound_init = alsa_device_init; saa7134_dmasound_exit = alsa_device_exit; pr_info("saa7134 ALSA driver for DMA sound loaded\n"); - list_for_each_entry(dev, &saa7134_devlist, devlist) { - if (dev->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130) + list_for_each_entry(iter, &saa7134_devlist, devlist) { + dev = iter; + + if (iter->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130) pr_info("%s/alsa: %s doesn't support digital audio\n", - dev->name, saa7134_boards[dev->board].name); + iter->name, saa7134_boards[iter->board].name); else - alsa_device_init(dev); + alsa_device_init(iter); } if (dev == NULL) -- 2.17.1