From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nathan Chancellor Subject: Re: [PATCH v2] isdn: hfc_{pci,sx}: Avoid empty body if statements Date: Thu, 18 Oct 2018 17:21:17 -0700 Message-ID: <20181019002117.GA10161@flashbox> References: <20181017180657.9410-1-natechancellor@gmail.com> <20181018034935.16819-1-natechancellor@gmail.com> <20181018.154219.1246620018001438422.davem@davemloft.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: isdn@linux-pingi.de, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, yamada.masahiro@socionext.com To: David Miller Return-path: Content-Disposition: inline In-Reply-To: <20181018.154219.1246620018001438422.davem@davemloft.net> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Thu, Oct 18, 2018 at 03:42:19PM -0700, David Miller wrote: > From: Nathan Chancellor > 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 */