tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: b1347210b01daa977ea980268927aa99198ceccc commit: 0e175f665960c7be30aba47afbee4f2d121ea5fc [1517/2389] ALSA: als4000: Allocate resources with device-managed APIs config: x86_64-randconfig-m001-20210722 (attached as .config) compiler: gcc-10 (Ubuntu 10.3.0-1ubuntu1~20.04) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> smatch warnings: sound/pci/als4000.c:930 snd_card_als4000_probe() warn: 'pci' not released on lines: 852,872. vim +/pci +930 sound/pci/als4000.c e23e7a14362072 Bill Pemberton 2012-12-06 809 static int snd_card_als4000_probe(struct pci_dev *pci, ^1da177e4c3f41 Linus Torvalds 2005-04-16 810 const struct pci_device_id *pci_id) ^1da177e4c3f41 Linus Torvalds 2005-04-16 811 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 812 static int dev; 17c39d9a59cbf4 Takashi Iwai 2005-11-17 813 struct snd_card *card; 17c39d9a59cbf4 Takashi Iwai 2005-11-17 814 struct snd_card_als4000 *acard; c0874449849175 Andreas Mohr 2008-08-20 815 unsigned long iobase; 17c39d9a59cbf4 Takashi Iwai 2005-11-17 816 struct snd_sb *chip; 17c39d9a59cbf4 Takashi Iwai 2005-11-17 817 struct snd_opl3 *opl3; ^1da177e4c3f41 Linus Torvalds 2005-04-16 818 unsigned short word; ^1da177e4c3f41 Linus Torvalds 2005-04-16 819 int err; ^1da177e4c3f41 Linus Torvalds 2005-04-16 820 ^1da177e4c3f41 Linus Torvalds 2005-04-16 821 if (dev >= SNDRV_CARDS) ^1da177e4c3f41 Linus Torvalds 2005-04-16 822 return -ENODEV; ^1da177e4c3f41 Linus Torvalds 2005-04-16 823 if (!enable[dev]) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 824 dev++; ^1da177e4c3f41 Linus Torvalds 2005-04-16 825 return -ENOENT; ^1da177e4c3f41 Linus Torvalds 2005-04-16 826 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 827 ^1da177e4c3f41 Linus Torvalds 2005-04-16 828 /* enable PCI device */ 0e175f665960c7 Takashi Iwai 2021-07-15 829 err = pcim_enable_device(pci); 61ea06e8a88163 Takashi Iwai 2021-06-08 830 if (err < 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 831 return err; 61ea06e8a88163 Takashi Iwai 2021-06-08 832 ^1da177e4c3f41 Linus Torvalds 2005-04-16 833 /* check, if we can restrict PCI DMA transfers to 24 bits */ 669f65eaeb969e Takashi Iwai 2021-01-14 834 if (dma_set_mask_and_coherent(&pci->dev, DMA_BIT_MASK(24))) { d85d878efb3047 Takashi Iwai 2014-02-25 835 dev_err(&pci->dev, "architecture does not support 24bit PCI busmaster DMA\n"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 836 return -ENXIO; ^1da177e4c3f41 Linus Torvalds 2005-04-16 837 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 838 61ea06e8a88163 Takashi Iwai 2021-06-08 839 err = pci_request_regions(pci, "ALS4000"); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 0e175f665960c7 Takashi Iwai 2021-07-15 840 if (err < 0) ^1da177e4c3f41 Linus Torvalds 2005-04-16 841 return err; c0874449849175 Andreas Mohr 2008-08-20 842 iobase = pci_resource_start(pci, 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 843 ^1da177e4c3f41 Linus Torvalds 2005-04-16 844 pci_read_config_word(pci, PCI_COMMAND, &word); ^1da177e4c3f41 Linus Torvalds 2005-04-16 845 pci_write_config_word(pci, PCI_COMMAND, word | PCI_COMMAND_IO); ^1da177e4c3f41 Linus Torvalds 2005-04-16 846 pci_set_master(pci); ^1da177e4c3f41 Linus Torvalds 2005-04-16 847 0e175f665960c7 Takashi Iwai 2021-07-15 848 err = snd_devm_card_new(&pci->dev, index[dev], id[dev], THIS_MODULE, e58de7baf7de11 Takashi Iwai 2008-12-28 849 sizeof(*acard) /* private_data: acard */, e58de7baf7de11 Takashi Iwai 2008-12-28 850 &card); 0e175f665960c7 Takashi Iwai 2021-07-15 851 if (err < 0) e58de7baf7de11 Takashi Iwai 2008-12-28 852 return err; ^^^^^^^^^^ Smatch complains because there is no error handling. Maybe the other error paths use devm_ magic? Or more likely Smatch just isn't smart enough... ^1da177e4c3f41 Linus Torvalds 2005-04-16 853 c0874449849175 Andreas Mohr 2008-08-20 854 acard = card->private_data; ^1da177e4c3f41 Linus Torvalds 2005-04-16 855 acard->pci = pci; c0874449849175 Andreas Mohr 2008-08-20 856 acard->iobase = iobase; ^1da177e4c3f41 Linus Torvalds 2005-04-16 857 card->private_free = snd_card_als4000_free; ^1da177e4c3f41 Linus Torvalds 2005-04-16 858 ^1da177e4c3f41 Linus Torvalds 2005-04-16 859 /* disable all legacy ISA stuff */ c0874449849175 Andreas Mohr 2008-08-20 860 snd_als4000_set_addr(acard->iobase, 0, 0, 0, 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 861 61ea06e8a88163 Takashi Iwai 2021-06-08 862 err = snd_sbdsp_create(card, c0874449849175 Andreas Mohr 2008-08-20 863 iobase + ALS4K_IOB_10_ADLIB_ADDR0, ^1da177e4c3f41 Linus Torvalds 2005-04-16 864 pci->irq, cb780cdd85b8ae Andreas Mohr 2008-08-21 865 /* internally registered as IRQF_SHARED in case of ALS4000 SB */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 866 snd_als4000_interrupt, ^1da177e4c3f41 Linus Torvalds 2005-04-16 867 -1, ^1da177e4c3f41 Linus Torvalds 2005-04-16 868 -1, ^1da177e4c3f41 Linus Torvalds 2005-04-16 869 SB_HW_ALS4000, 61ea06e8a88163 Takashi Iwai 2021-06-08 870 &chip); 61ea06e8a88163 Takashi Iwai 2021-06-08 871 if (err < 0) 0e175f665960c7 Takashi Iwai 2021-07-15 872 return err; ^^^^^^^^^^ I don't know why only these two error paths trigger a warning. 703529140cfb77 Takashi Iwai 2005-11-17 873 acard->chip = chip; ^1da177e4c3f41 Linus Torvalds 2005-04-16 874 ^1da177e4c3f41 Linus Torvalds 2005-04-16 875 chip->pci = pci; c0874449849175 Andreas Mohr 2008-08-20 876 chip->alt_port = iobase; ^1da177e4c3f41 Linus Torvalds 2005-04-16 877 ^1da177e4c3f41 Linus Torvalds 2005-04-16 878 snd_als4000_configure(chip); ^1da177e4c3f41 Linus Torvalds 2005-04-16 879 ^1da177e4c3f41 Linus Torvalds 2005-04-16 880 strcpy(card->driver, "ALS4000"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 881 strcpy(card->shortname, "Avance Logic ALS4000"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 882 sprintf(card->longname, "%s at 0x%lx, irq %i", ^1da177e4c3f41 Linus Torvalds 2005-04-16 883 card->shortname, chip->alt_port, chip->irq); ^1da177e4c3f41 Linus Torvalds 2005-04-16 884 61ea06e8a88163 Takashi Iwai 2021-06-08 885 err = snd_mpu401_uart_new(card, 0, MPU401_HW_ALS4000, c0874449849175 Andreas Mohr 2008-08-20 886 iobase + ALS4K_IOB_30_MIDI_DATA, dba8b46992c559 Clemens Ladisch 2011-09-13 887 MPU401_INFO_INTEGRATED | dba8b46992c559 Clemens Ladisch 2011-09-13 888 MPU401_INFO_IRQ_HOOK, 61ea06e8a88163 Takashi Iwai 2021-06-08 889 -1, &chip->rmidi); 61ea06e8a88163 Takashi Iwai 2021-06-08 890 if (err < 0) { d85d878efb3047 Takashi Iwai 2014-02-25 891 dev_err(&pci->dev, "no MPU-401 device at 0x%lx?\n", c0874449849175 Andreas Mohr 2008-08-20 892 iobase + ALS4K_IOB_30_MIDI_DATA); 0e175f665960c7 Takashi Iwai 2021-07-15 893 return err; ^1da177e4c3f41 Linus Torvalds 2005-04-16 894 } c0874449849175 Andreas Mohr 2008-08-20 895 /* FIXME: ALS4000 has interesting MPU401 configuration features cb780cdd85b8ae Andreas Mohr 2008-08-21 896 * at ALS4K_CR1A_MPU401_UART_MODE_CONTROL cb780cdd85b8ae Andreas Mohr 2008-08-21 897 * (pass-thru / UART switching, fast MIDI clock, etc.), cb780cdd85b8ae Andreas Mohr 2008-08-21 898 * however there doesn't seem to be an ALSA API for this... cb780cdd85b8ae Andreas Mohr 2008-08-21 899 * SPECS_PAGE: 21 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 900 61ea06e8a88163 Takashi Iwai 2021-06-08 901 err = snd_als4000_pcm(chip, 0); 61ea06e8a88163 Takashi Iwai 2021-06-08 902 if (err < 0) 0e175f665960c7 Takashi Iwai 2021-07-15 903 return err; 61ea06e8a88163 Takashi Iwai 2021-06-08 904 61ea06e8a88163 Takashi Iwai 2021-06-08 905 err = snd_sbmixer_new(chip); 61ea06e8a88163 Takashi Iwai 2021-06-08 906 if (err < 0) 0e175f665960c7 Takashi Iwai 2021-07-15 907 return err; ^1da177e4c3f41 Linus Torvalds 2005-04-16 908 c0874449849175 Andreas Mohr 2008-08-20 909 if (snd_opl3_create(card, c0874449849175 Andreas Mohr 2008-08-20 910 iobase + ALS4K_IOB_10_ADLIB_ADDR0, c0874449849175 Andreas Mohr 2008-08-20 911 iobase + ALS4K_IOB_12_ADLIB_ADDR2, ^1da177e4c3f41 Linus Torvalds 2005-04-16 912 OPL3_HW_AUTO, 1, &opl3) < 0) { d85d878efb3047 Takashi Iwai 2014-02-25 913 dev_err(&pci->dev, "no OPL device at 0x%lx-0x%lx?\n", c0874449849175 Andreas Mohr 2008-08-20 914 iobase + ALS4K_IOB_10_ADLIB_ADDR0, c0874449849175 Andreas Mohr 2008-08-20 915 iobase + ALS4K_IOB_12_ADLIB_ADDR2); ^1da177e4c3f41 Linus Torvalds 2005-04-16 916 } else { 61ea06e8a88163 Takashi Iwai 2021-06-08 917 err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); 61ea06e8a88163 Takashi Iwai 2021-06-08 918 if (err < 0) 0e175f665960c7 Takashi Iwai 2021-07-15 919 return err; ^1da177e4c3f41 Linus Torvalds 2005-04-16 920 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 921 ^1da177e4c3f41 Linus Torvalds 2005-04-16 922 snd_als4000_create_gameport(acard, dev); ^1da177e4c3f41 Linus Torvalds 2005-04-16 923 61ea06e8a88163 Takashi Iwai 2021-06-08 924 err = snd_card_register(card); 61ea06e8a88163 Takashi Iwai 2021-06-08 925 if (err < 0) 0e175f665960c7 Takashi Iwai 2021-07-15 926 return err; 61ea06e8a88163 Takashi Iwai 2021-06-08 927 ^1da177e4c3f41 Linus Torvalds 2005-04-16 928 pci_set_drvdata(pci, card); ^1da177e4c3f41 Linus Torvalds 2005-04-16 929 dev++; 0e175f665960c7 Takashi Iwai 2021-07-15 @930 return 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 931 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx