On Tue, Apr 14, 2015 at 09:56:23PM +0200, Uwe Kleine-König wrote: > From: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > > This makes it more obvious why the cast is needed. Still looks ugly though. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> > --- > drivers/pci/bus.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c > index 866ab08..fca4f5c 100644 > --- a/drivers/pci/bus.c > +++ b/drivers/pci/bus.c > @@ -27,11 +27,11 @@ static int pci_match(struct device_d *dev, struct driver_d *drv) > { > struct pci_dev *pdev = to_pci_dev(dev); > struct pci_driver *pdrv = to_pci_driver(drv); > - struct pci_device_id *id; > + const struct pci_device_id *id; > > - for (id = (struct pci_device_id *)pdrv->id_table; id->vendor; id++) > + for (id = pdrv->id_table; id->vendor; id++) > if (pci_match_one_device(id, pdev)) { > - dev->priv = id; > + dev->priv = (/* non-const */ void *)id; dev->priv shouldn't be used here, it's for private use of the device driver. The following should fix it (untested). Sascha ---------------------8<---------------------------- >From 7977a32035787b500aa52e4a4241101e5aae7ad7 Mon Sep 17 00:00:00 2001 From: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> Date: Wed, 15 Apr 2015 07:25:41 +0200 Subject: [PATCH] pci: Do not abuse dev->priv for storing data dev->priv is for private use of the device driver, so do not use it in the pci core. Instead, introduce a id field in struct pci_device. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/pci/bus.c | 6 +++--- include/linux/pci.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index d6c5496..9fec4d7 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c @@ -27,11 +27,11 @@ static int pci_match(struct device_d *dev, struct driver_d *drv) { struct pci_dev *pdev = to_pci_dev(dev); struct pci_driver *pdrv = to_pci_driver(drv); - struct pci_device_id *id; + const struct pci_device_id *id; for (id = (struct pci_device_id *)pdrv->id_table; id->vendor; id++) if (pci_match_one_device(id, pdev)) { - dev->priv = id; + pdev->id = id; return 0; } @@ -43,7 +43,7 @@ static int pci_probe(struct device_d *dev) struct pci_dev *pdev = to_pci_dev(dev); struct pci_driver *pdrv = to_pci_driver(dev->driver); - return pdrv->probe(pdev, dev->priv); + return pdrv->probe(pdev, pdev->id); } static void pci_remove(struct device_d *dev) diff --git a/include/linux/pci.h b/include/linux/pci.h index e422055..152ba10 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -92,6 +92,7 @@ struct pci_dev { struct pci_bus *bus; /* bus this device is on */ struct pci_bus *subordinate; /* bus this device bridges to */ struct pci_slot *slot; /* Physical slot this device is in */ + const struct pci_device_id *id; /* the id this device matches */ struct device_d dev; -- 2.1.4 -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox