Subject: Re: [PATCH v2] isdn: hfc_{pci,sx}: Avoid empty body if statements

From: Nathan Chancellor <[email-masked]>
Date: Thu, 18 Oct 2018 17:21:17 -0700

On Thu, Oct 18, 2018 at 03:42:19PM -0700, David Miller wrote:
> From: Nathan Chancellor <[email-masked]>
> Date: Wed, 17 Oct 2018 20:49:36 -0700
> 
> > @@ -228,8 +228,8 @@ typedef union {
> >  } fifo_area;
> >  
> >  
> > -#define Write_hfc(a, b, c) (*(((u_char *)a->hw.hfcpci.pci_io) + b) = c)
> > -#define Read_hfc(a, b) (*(((u_char *)a->hw.hfcpci.pci_io) + b))
> > +#define Write_hfc(a, b, c) (writeb(c, (a->hw.hfcpci.pci_io) + b))
> > +#define Read_hfc(a, b) (readb((a->hw.hfcpci.pci_io) + b))
> 
> This will add new kinds of warnings.
> 
> The problem is that readb/writeb/etc. take an __iomem pointer, but pci_io
> is declared as plain "unsigned char *".  It should be something like
> "void * __iomem" of similar.

Thanks for the review, I went ahead and compiled with the following diff
on top of v2 and got no warnings from Clang, GCC, or sparse, does this
seem satisfactory for v3?

Nathan

========================================================================

diff --git a/drivers/isdn/hisax/hfc_pci.c b/drivers/isdn/hisax/hfc_pci.c
index 7bcd104e9dfe..3dbaee8c604f 100644
--- a/drivers/isdn/hisax/hfc_pci.c
+++ b/drivers/isdn/hisax/hfc_pci.c
@@ -86,7 +86,7 @@ release_io_hfcpci(struct IsdnCardState *cs)
        pci_free_consistent(cs->hw.hfcpci.dev, 0x8000,
                            cs->hw.hfcpci.fifos, cs->hw.hfcpci.dma);
        cs->hw.hfcpci.fifos = NULL;
-       iounmap((void *)cs->hw.hfcpci.pci_io);
+       iounmap(cs->hw.hfcpci.pci_io);
 }
 
 /********************************************************************************/
@@ -1692,7 +1692,7 @@ setup_hfcpci(struct IsdnCard *card)
                printk(KERN_WARNING "HFC-PCI: No IRQ for PCI card found\n");
                return (0);
        }
-       cs->hw.hfcpci.pci_io = (char *)(unsigned long)dev_hfcpci->resource[1].start;
+       cs->hw.hfcpci.pci_io = (void __iomem *)(unsigned long)dev_hfcpci->resource[1].start;
        printk(KERN_INFO "HiSax: HFC-PCI card manufacturer: %s card name: %s\n", id_list[i].vendor_name, id_list[i].card_name);
 
        if (!cs->hw.hfcpci.pci_io) {
diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h
index 338d0408b377..40080e06421c 100644
--- a/drivers/isdn/hisax/hisax.h
+++ b/drivers/isdn/hisax/hisax.h
@@ -703,7 +703,7 @@ struct hfcPCI_hw {
        unsigned char nt_mode;
        int nt_timer;
        struct pci_dev *dev;
-       unsigned char *pci_io; /* start of PCI IO memory */
+       void __iomem *pci_io; /* start of PCI IO memory */
        dma_addr_t dma; /* dma handle for Fifos */
        void *fifos; /* FIFO memory */
        int last_bfifo_cnt[2]; /* marker saving last b-fifo frame count */