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 from v1: - check with list_empty() (Jakob Koschel) - move the 'if' ahead (Xiaomeng Tong) v1:https://lore.kernel.org/all/20220320025718.10053-1-xiam0nd.tong@xxxxxxxxx/ sorry for the wrong PATCH v2: https://lore.kernel.org/all/20220326072215.11608-1-xiam0nd.tong@xxxxxxxxx/ just skip it. --- drivers/media/pci/saa7134/saa7134-alsa.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/pci/saa7134/saa7134-alsa.c b/drivers/media/pci/saa7134/saa7134-alsa.c index fb24d2ed3621..f0318617197c 100644 --- a/drivers/media/pci/saa7134/saa7134-alsa.c +++ b/drivers/media/pci/saa7134/saa7134-alsa.c @@ -1214,13 +1214,16 @@ static int alsa_device_exit(struct saa7134_dev *dev) static int saa7134_alsa_init(void) { - struct saa7134_dev *dev = NULL; + struct saa7134_dev *dev; saa7134_dmasound_init = alsa_device_init; saa7134_dmasound_exit = alsa_device_exit; pr_info("saa7134 ALSA driver for DMA sound loaded\n"); + if (list_empty(&saa7134_devlist)) + pr_info("saa7134 ALSA: no saa7134 cards found\n"); + list_for_each_entry(dev, &saa7134_devlist, devlist) { if (dev->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130) pr_info("%s/alsa: %s doesn't support digital audio\n", @@ -1229,9 +1232,6 @@ static int saa7134_alsa_init(void) alsa_device_init(dev); } - if (dev == NULL) - pr_info("saa7134 ALSA: no saa7134 cards found\n"); - return 0; } -- 2.17.1