CC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: Takashi Iwai <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   90d856e71443a2fcacca8e7539bac44d9cb3f7ab
commit: c19935f04784dcaa456fcd1d1b1fbf3a85765ff1 [1791/3296] ALSA: nm256: 
Allocate resources with device-managed APIs
:::::: branch date: 35 hours ago
:::::: commit date: 5 days ago
config: x86_64-randconfig-m001-20210724 (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 <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
sound/pci/nm256/nm256.c:1578 snd_nm256_create() warn: 'pci' not released on 
lines: 1490,1506.

vim +/pci +1578 sound/pci/nm256/nm256.c

^1da177e4c3f41 Linus Torvalds 2005-04-16  1448  
e23e7a14362072 Bill Pemberton 2012-12-06  1449  static int
c19935f04784dc Takashi Iwai   2021-07-15  1450  snd_nm256_create(struct 
snd_card *card, struct pci_dev *pci)
^1da177e4c3f41 Linus Torvalds 2005-04-16  1451  {
c19935f04784dc Takashi Iwai   2021-07-15  1452          struct nm256 *chip = 
card->private_data;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1453          int err, pval;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1454          u32 addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1455  
c19935f04784dc Takashi Iwai   2021-07-15  1456          err = 
pcim_enable_device(pci);
36f74c7ff9e6de Takashi Iwai   2021-06-08  1457          if (err < 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16  1458                  return err;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1459  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1460          chip->card = card;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1461          chip->pci = pci;
3f05f868f1112b Takashi Iwai   2005-11-17  1462          chip->use_cache = 
use_cache;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1463          
spin_lock_init(&chip->reg_lock);
^1da177e4c3f41 Linus Torvalds 2005-04-16  1464          chip->irq = -1;
62932df8fb20ba Ingo Molnar    2006-01-16  1465          
mutex_init(&chip->irq_mutex);
^1da177e4c3f41 Linus Torvalds 2005-04-16  1466  
3f05f868f1112b Takashi Iwai   2005-11-17  1467          /* store buffer sizes 
in bytes */
3f05f868f1112b Takashi Iwai   2005-11-17  1468          
chip->streams[SNDRV_PCM_STREAM_PLAYBACK].bufsize = playback_bufsize * 1024;
3f05f868f1112b Takashi Iwai   2005-11-17  1469          
chip->streams[SNDRV_PCM_STREAM_CAPTURE].bufsize = capture_bufsize * 1024;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1470  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1471          /* 
^1da177e4c3f41 Linus Torvalds 2005-04-16  1472           * The NM256 has two 
memory ports.  The first port is nothing
^1da177e4c3f41 Linus Torvalds 2005-04-16  1473           * more than a chunk of 
video RAM, which is used as the I/O ring
^1da177e4c3f41 Linus Torvalds 2005-04-16  1474           * buffer.  The second 
port has the actual juicy stuff (like the
^1da177e4c3f41 Linus Torvalds 2005-04-16  1475           * mixer and the 
playback engine control registers).
^1da177e4c3f41 Linus Torvalds 2005-04-16  1476           */
^1da177e4c3f41 Linus Torvalds 2005-04-16  1477  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1478          chip->buffer_addr = 
pci_resource_start(pci, 0);
^1da177e4c3f41 Linus Torvalds 2005-04-16  1479          chip->cport_addr = 
pci_resource_start(pci, 1);
^1da177e4c3f41 Linus Torvalds 2005-04-16  1480  
c19935f04784dc Takashi Iwai   2021-07-15  1481          if 
(pci_request_regions(pci, card->driver))
c19935f04784dc Takashi Iwai   2021-07-15  1482                  return err;
c19935f04784dc Takashi Iwai   2021-07-15  1483  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1484          /* Init the memory port 
info.  */
^1da177e4c3f41 Linus Torvalds 2005-04-16  1485          /* remap control port 
(#2) */
c19935f04784dc Takashi Iwai   2021-07-15  1486          chip->cport = 
devm_ioremap(&pci->dev, chip->cport_addr, NM_PORT2_SIZE);
c19935f04784dc Takashi Iwai   2021-07-15  1487          if (!chip->cport) {
a3fe03f412daf4 Takashi Iwai   2014-02-25  1488                  
dev_err(card->dev, "unable to map control port %lx\n",
a3fe03f412daf4 Takashi Iwai   2014-02-25  1489                          
chip->cport_addr);
c19935f04784dc Takashi Iwai   2021-07-15  1490                  return -ENOMEM;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1491          }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1492  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1493          if 
(!strcmp(card->driver, "NM256AV")) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  1494                  /* Ok, try to 
see if this is a non-AC97 version of the hardware. */
^1da177e4c3f41 Linus Torvalds 2005-04-16  1495                  pval = 
snd_nm256_readw(chip, NM_MIXER_PRESENCE);
^1da177e4c3f41 Linus Torvalds 2005-04-16  1496                  if ((pval & 
NM_PRESENCE_MASK) != NM_PRESENCE_VALUE) {
3f05f868f1112b Takashi Iwai   2005-11-17  1497                          if (! 
force_ac97) {
a3fe03f412daf4 Takashi Iwai   2014-02-25  1498                                  
dev_err(card->dev,
a3fe03f412daf4 Takashi Iwai   2014-02-25  1499                                  
        "no ac97 is found!\n");
a3fe03f412daf4 Takashi Iwai   2014-02-25  1500                                  
dev_err(card->dev,
a3fe03f412daf4 Takashi Iwai   2014-02-25  1501                                  
        "force the driver to load by passing in the module parameter\n");
a3fe03f412daf4 Takashi Iwai   2014-02-25  1502                                  
dev_err(card->dev,
a3fe03f412daf4 Takashi Iwai   2014-02-25  1503                                  
        " force_ac97=1\n");
a3fe03f412daf4 Takashi Iwai   2014-02-25  1504                                  
dev_err(card->dev,
a3fe03f412daf4 Takashi Iwai   2014-02-25  1505                                  
        "or try sb16, opl3sa2, or cs423x drivers instead.\n");
c19935f04784dc Takashi Iwai   2021-07-15  1506                                  
return -ENXIO;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1507                          }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1508                  }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1509                  
chip->buffer_end = 2560 * 1024;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1510                  chip->interrupt 
= snd_nm256_interrupt;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1511                  
chip->mixer_status_offset = NM_MIXER_STATUS_OFFSET;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1512                  
chip->mixer_status_mask = NM_MIXER_READY_MASK;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1513          } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16  1514                  /* Not sure if 
there is any relevant detect for the ZX or not.  */
^1da177e4c3f41 Linus Torvalds 2005-04-16  1515                  if 
(snd_nm256_readb(chip, 0xa0b) != 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16  1516                          
chip->buffer_end = 6144 * 1024;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1517                  else
^1da177e4c3f41 Linus Torvalds 2005-04-16  1518                          
chip->buffer_end = 4096 * 1024;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1519  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1520                  chip->interrupt 
= snd_nm256_interrupt_zx;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1521                  
chip->mixer_status_offset = NM2_MIXER_STATUS_OFFSET;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1522                  
chip->mixer_status_mask = NM2_MIXER_READY_MASK;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1523          }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1524          
10754f53450a2c Takashi Iwai   2005-11-17  1525          chip->buffer_size = 
chip->streams[SNDRV_PCM_STREAM_PLAYBACK].bufsize +
10754f53450a2c Takashi Iwai   2005-11-17  1526                  
chip->streams[SNDRV_PCM_STREAM_CAPTURE].bufsize;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1527          if (chip->use_cache)
^1da177e4c3f41 Linus Torvalds 2005-04-16  1528                  
chip->buffer_size += NM_TOTAL_COEFF_COUNT * 4;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1529          else
^1da177e4c3f41 Linus Torvalds 2005-04-16  1530                  
chip->buffer_size += NM_MAX_PLAYBACK_COEF_SIZE + NM_MAX_RECORD_COEF_SIZE;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1531  
3f05f868f1112b Takashi Iwai   2005-11-17  1532          if (buffer_top >= 
chip->buffer_size && buffer_top < chip->buffer_end)
3f05f868f1112b Takashi Iwai   2005-11-17  1533                  
chip->buffer_end = buffer_top;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1534          else {
^1da177e4c3f41 Linus Torvalds 2005-04-16  1535                  /* get buffer 
end pointer from signature */
36f74c7ff9e6de Takashi Iwai   2021-06-08  1536                  err = 
snd_nm256_peek_for_sig(chip);
36f74c7ff9e6de Takashi Iwai   2021-06-08  1537                  if (err < 0)
c19935f04784dc Takashi Iwai   2021-07-15  1538                          return 
err;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1539          }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1540  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1541          chip->buffer_start = 
chip->buffer_end - chip->buffer_size;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1542          chip->buffer_addr += 
chip->buffer_start;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1543  
a3fe03f412daf4 Takashi Iwai   2014-02-25  1544          dev_info(card->dev, 
"Mapping port 1 from 0x%x - 0x%x\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16  1545                 
chip->buffer_start, chip->buffer_end);
^1da177e4c3f41 Linus Torvalds 2005-04-16  1546  
c19935f04784dc Takashi Iwai   2021-07-15  1547          chip->buffer = 
devm_ioremap(&pci->dev, chip->buffer_addr,
c19935f04784dc Takashi Iwai   2021-07-15  1548                                  
    chip->buffer_size);
c19935f04784dc Takashi Iwai   2021-07-15  1549          if (!chip->buffer) {
a3fe03f412daf4 Takashi Iwai   2014-02-25  1550                  
dev_err(card->dev, "unable to map ring buffer at %lx\n",
a3fe03f412daf4 Takashi Iwai   2014-02-25  1551                          
chip->buffer_addr);
c19935f04784dc Takashi Iwai   2021-07-15  1552                  return -ENOMEM;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1553          }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1554  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1555          /* set offsets */
^1da177e4c3f41 Linus Torvalds 2005-04-16  1556          addr = 
chip->buffer_start;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1557          
chip->streams[SNDRV_PCM_STREAM_PLAYBACK].buf = addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1558          addr += 
chip->streams[SNDRV_PCM_STREAM_PLAYBACK].bufsize;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1559          
chip->streams[SNDRV_PCM_STREAM_CAPTURE].buf = addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1560          addr += 
chip->streams[SNDRV_PCM_STREAM_CAPTURE].bufsize;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1561          if (chip->use_cache) {
^1da177e4c3f41 Linus Torvalds 2005-04-16  1562                  
chip->all_coeff_buf = addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1563          } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16  1564                  
chip->coeff_buf[SNDRV_PCM_STREAM_PLAYBACK] = addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1565                  addr += 
NM_MAX_PLAYBACK_COEF_SIZE;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1566                  
chip->coeff_buf[SNDRV_PCM_STREAM_CAPTURE] = addr;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1567          }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1568  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1569          /* Fixed setting. */
^1da177e4c3f41 Linus Torvalds 2005-04-16  1570          chip->mixer_base = 
NM_MIXER_OFFSET;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1571  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1572          chip->coeffs_current = 
0;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1573  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1574          
snd_nm256_init_chip(chip);
c19935f04784dc Takashi Iwai   2021-07-15  1575          card->private_free = 
snd_nm256_free;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1576  
^1da177e4c3f41 Linus Torvalds 2005-04-16  1577          // pci_set_master(pci); 
/* needed? */
^1da177e4c3f41 Linus Torvalds 2005-04-16 @1578          return 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16  1579  }
^1da177e4c3f41 Linus Torvalds 2005-04-16  1580  

:::::: The code at line 1578 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <[email protected]>
:::::: CC: Linus Torvalds <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to