On Mon, 5 Mar 2018, Michael Schmitz wrote:
> >> +fail_unmap_dma_regs:
> >> + if (ioaddr > 0xffffff)
> >> + iounmap(esp->dma_regs);
> >
> > I think you need to test for ZORRO_PROD_PHASE5_BLIZZARD_1230_IV_1260 here?
>
> On second thought - no, I don't. the ID check above only determines what
> Zorro-3 address is ioremapped, but in each case where ioaddr > 0xffffff,
> something will have been mapped at this point.
>
I think you are talking about esp->regs? For esp->dma_regs, the ioremap is
conditional on ent->id, but the unmap is not.
> >> +}
> >> +
> >> +static void zorro_esp_remove_one(struct zorro_dev *z)
> >> +{
> >> + struct Scsi_Host *host = zorro_get_drvdata(z);
> >> + struct esp *esp = shost_priv(host);
> >> +
> >> + scsi_esp_unregister(esp);
> >> +
> >> + /* Disable interrupts. Perhaps use disable_irq instead ... */
> >> +
> >> + free_irq(host->irq, esp);
> >> + dma_free_coherent(esp->dev, 16,
> >> + esp->command_block,
> >> + esp->command_block_dma);
> >> +
> >> + if (host->base > 0xffffff) {
> >> + iounmap(esp->dma_regs);
> >
> > Do you need to test for ZORRO_PROD_PHASE5_BLIZZARD_1230_IV_1260 first?
>
> I can't - ent->id is not available here...
Maybe store ent->id in the private struct to get around that?
--