Message ID | 20200913165230.17166-1-trix@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ALSA: asihpi: fix iounmap in error handler | expand |
On Sun, 13 Sep 2020 18:52:30 +0200, trix@redhat.com wrote: > > From: Tom Rix <trix@redhat.com> > > clang static analysis flags this problem > hpioctl.c:513:7: warning: Branch condition evaluates to > a garbage value > if (pci.ap_mem_base[idx]) { > ^~~~~~~~~~~~~~~~~~~~ > > If there is a failure in the middle of the memory space loop, > only some of the memory spaces need to be cleaned up. > > At the error handler, idx holds the number of successful > memory spaces mapped. So rework the handler loop to use the > old idx. > > There is a second problem, the memory space loop conditionally > iomaps()/sets the mem_base so it is necessay to initize pci. > > Fixes: 719f82d3987a ("ALSA: Add support of AudioScience ASI boards") > Signed-off-by: Tom Rix <trix@redhat.com> Thanks, applied. Takashi
diff --git a/sound/pci/asihpi/hpioctl.c b/sound/pci/asihpi/hpioctl.c index 6cc2b6964bb5..bb31b7fe867d 100644 --- a/sound/pci/asihpi/hpioctl.c +++ b/sound/pci/asihpi/hpioctl.c @@ -352,7 +352,7 @@ int asihpi_adapter_probe(struct pci_dev *pci_dev, struct hpi_message hm; struct hpi_response hr; struct hpi_adapter adapter; - struct hpi_pci pci; + struct hpi_pci pci = { 0 }; memset(&adapter, 0, sizeof(adapter)); @@ -509,7 +509,7 @@ int asihpi_adapter_probe(struct pci_dev *pci_dev, return 0; err: - for (idx = 0; idx < HPI_MAX_ADAPTER_MEM_SPACES; idx++) { + while (--idx >= 0) { if (pci.ap_mem_base[idx]) { iounmap(pci.ap_mem_base[idx]); pci.ap_mem_base[idx] = NULL;