linux-staging.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] staging: gpib: Fix i386 build issue
@ 2024-12-02 17:33 Dave Penkler
  2024-12-02 17:48 ` Guenter Roeck
  0 siblings, 1 reply; 4+ messages in thread
From: Dave Penkler @ 2024-12-02 17:33 UTC (permalink / raw)
  To: gregkh, linux-staging, linux-kernel; +Cc: linux, Dave Penkler

Both drivers cast resource_type_t to void * causing the build to fail.

With CONFIG_X86_PAE enabled the resource_size_t type is a 64bit unsigned int
which cannot be cast to a 32 bit pointer.

Use ioremap() instead of pci_resource_start()

Reported_by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/all/f10e976e-7a04-4454-b38d-39cd18f142da@roeck-us.net/
Fixes: bb1bd92fa0f2 ("staging: gpib: Add ines GPIB driver")
Fixes: e1339245eba3 ("staging: gpib: Add Computer Equipment Corporation GPIB driver")

Signed-off-by: Dave Penkler <dpenkler@gmail.com>
---
v1 -> v2 changed pci_resource_start to pci_resource_len for second parameter of ioremap

 drivers/staging/gpib/cec/cec_gpib.c   | 3 ++-
 drivers/staging/gpib/ines/ines_gpib.c | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/gpib/cec/cec_gpib.c b/drivers/staging/gpib/cec/cec_gpib.c
index 3dc933deb401..a1ea4d9e370a 100644
--- a/drivers/staging/gpib/cec/cec_gpib.c
+++ b/drivers/staging/gpib/cec/cec_gpib.c
@@ -297,7 +297,8 @@ int cec_pci_attach(gpib_board_t *board, const gpib_board_config_t *config)
 
 	cec_priv->plx_iobase = pci_resource_start(cec_priv->pci_device, 1);
 	pr_info(" plx9050 base address 0x%lx\n", cec_priv->plx_iobase);
-	nec_priv->iobase = (void *)(pci_resource_start(cec_priv->pci_device, 3));
+	nec_priv->iobase = ioremap(pci_resource_start(cec_priv->pci_device, 3),
+				   pci_resource_len(cec_priv->pci_device, 3));
 	pr_info(" nec7210 base address 0x%p\n", nec_priv->iobase);
 
 	isr_flags |= IRQF_SHARED;
diff --git a/drivers/staging/gpib/ines/ines_gpib.c b/drivers/staging/gpib/ines/ines_gpib.c
index 9d8387c3bf01..b5f8ea57fd9d 100644
--- a/drivers/staging/gpib/ines/ines_gpib.c
+++ b/drivers/staging/gpib/ines/ines_gpib.c
@@ -780,8 +780,8 @@ static int ines_common_pci_attach(gpib_board_t *board, const gpib_board_config_t
 
 	if (pci_request_regions(ines_priv->pci_device, "ines-gpib"))
 		return -1;
-	nec_priv->iobase = (void *)(pci_resource_start(ines_priv->pci_device,
-						       found_id.gpib_region));
+	nec_priv->iobase = ioremap(pci_resource_start(ines_priv->pci_device, found_id.gpib_region),
+				   pci_resource_len(ines_priv->pci_device, found_id.gpib_region));
 
 	ines_priv->pci_chip_type = found_id.pci_chip_type;
 	nec_priv->offset = found_id.io_offset;
-- 
2.46.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] staging: gpib: Fix i386 build issue
  2024-12-02 17:33 [PATCH v2] staging: gpib: Fix i386 build issue Dave Penkler
@ 2024-12-02 17:48 ` Guenter Roeck
  2024-12-03  8:43   ` Dave Penkler
  0 siblings, 1 reply; 4+ messages in thread
From: Guenter Roeck @ 2024-12-02 17:48 UTC (permalink / raw)
  To: Dave Penkler, gregkh, linux-staging, linux-kernel

On 12/2/24 09:33, Dave Penkler wrote:
> Both drivers cast resource_type_t to void * causing the build to fail.
> 
> With CONFIG_X86_PAE enabled the resource_size_t type is a 64bit unsigned int
> which cannot be cast to a 32 bit pointer.
> 
> Use ioremap() instead of pci_resource_start()
> 
> Reported_by: Guenter Roeck <linux@roeck-us.net>
> Link: https://lore.kernel.org/all/f10e976e-7a04-4454-b38d-39cd18f142da@roeck-us.net/
> Fixes: bb1bd92fa0f2 ("staging: gpib: Add ines GPIB driver")
> Fixes: e1339245eba3 ("staging: gpib: Add Computer Equipment Corporation GPIB driver")
> 
> Signed-off-by: Dave Penkler <dpenkler@gmail.com>
> ---
> v1 -> v2 changed pci_resource_start to pci_resource_len for second parameter of ioremap
> 
Sorry, there are some more.

drivers/staging/gpib/tnt4882/tnt4882_gpib.c: In function ‘ni_isa_attach_common’:
drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1430:26: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]

drivers/staging/gpib/cb7210/cb7210.c: In function 'cb_pci_attach':
drivers/staging/gpib/cb7210/cb7210.c:974:36: error: cast to pointer from integer of different size

Not sure if that really fixes the problem though, since there is other code
which maps the void * back to phys_addr_t (or, rather, to unsigned long).
It might be better to work around the problem for now by disabling support
for platforms where sizeof(phys_addr_t) > sizeof(void *).

Guenter


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] staging: gpib: Fix i386 build issue
  2024-12-02 17:48 ` Guenter Roeck
@ 2024-12-03  8:43   ` Dave Penkler
  2024-12-04 12:01     ` Dave Penkler
  0 siblings, 1 reply; 4+ messages in thread
From: Dave Penkler @ 2024-12-03  8:43 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: gregkh, linux-staging, linux-kernel

On Mon, Dec 02, 2024 at 09:48:49AM -0800, Guenter Roeck wrote:
> On 12/2/24 09:33, Dave Penkler wrote:
> > Both drivers cast resource_type_t to void * causing the build to fail.
> > 
> > With CONFIG_X86_PAE enabled the resource_size_t type is a 64bit unsigned int
> > which cannot be cast to a 32 bit pointer.
> > 
> > Use ioremap() instead of pci_resource_start()
> > 
> > Reported_by: Guenter Roeck <linux@roeck-us.net>
> > Link: https://lore.kernel.org/all/f10e976e-7a04-4454-b38d-39cd18f142da@roeck-us.net/
> > Fixes: bb1bd92fa0f2 ("staging: gpib: Add ines GPIB driver")
> > Fixes: e1339245eba3 ("staging: gpib: Add Computer Equipment Corporation GPIB driver")
> > 
> > Signed-off-by: Dave Penkler <dpenkler@gmail.com>
> > ---
> > v1 -> v2 changed pci_resource_start to pci_resource_len for second parameter of ioremap
> > 
> Sorry, there are some more.
> 
> drivers/staging/gpib/tnt4882/tnt4882_gpib.c: In function ???ni_isa_attach_common???:
> drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1430:26: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> 
> drivers/staging/gpib/cb7210/cb7210.c: In function 'cb_pci_attach':
> drivers/staging/gpib/cb7210/cb7210.c:974:36: error: cast to pointer from integer of different size
> 
> Not sure if that really fixes the problem though, since there is other code
> which maps the void * back to phys_addr_t (or, rather, to unsigned long).
> It might be better to work around the problem for now by disabling support
> for platforms where sizeof(phys_addr_t) > sizeof(void *).

I think it is dealt with in v3.
- Dave

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] staging: gpib: Fix i386 build issue
  2024-12-03  8:43   ` Dave Penkler
@ 2024-12-04 12:01     ` Dave Penkler
  0 siblings, 0 replies; 4+ messages in thread
From: Dave Penkler @ 2024-12-04 12:01 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: gregkh, linux-staging, linux-kernel

On Tue, Dec 03, 2024 at 09:43:33AM +0100, Dave Penkler wrote:
> On Mon, Dec 02, 2024 at 09:48:49AM -0800, Guenter Roeck wrote:
> > On 12/2/24 09:33, Dave Penkler wrote:
> > > Both drivers cast resource_type_t to void * causing the build to fail.
> > > 
> > > With CONFIG_X86_PAE enabled the resource_size_t type is a 64bit unsigned int
> > > which cannot be cast to a 32 bit pointer.
> > > 
> > > Use ioremap() instead of pci_resource_start()
> > > 
> > > Reported_by: Guenter Roeck <linux@roeck-us.net>
> > > Link: https://lore.kernel.org/all/f10e976e-7a04-4454-b38d-39cd18f142da@roeck-us.net/
> > > Fixes: bb1bd92fa0f2 ("staging: gpib: Add ines GPIB driver")
> > > Fixes: e1339245eba3 ("staging: gpib: Add Computer Equipment Corporation GPIB driver")
> > > 
> > > Signed-off-by: Dave Penkler <dpenkler@gmail.com>
> > > ---
> > > v1 -> v2 changed pci_resource_start to pci_resource_len for second parameter of ioremap
> > > 
> > Sorry, there are some more.
> > 
> > drivers/staging/gpib/tnt4882/tnt4882_gpib.c: In function ???ni_isa_attach_common???:
> > drivers/staging/gpib/tnt4882/tnt4882_gpib.c:1430:26: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> > 
> > drivers/staging/gpib/cb7210/cb7210.c: In function 'cb_pci_attach':
> > drivers/staging/gpib/cb7210/cb7210.c:974:36: error: cast to pointer from integer of different size
> > 
> > Not sure if that really fixes the problem though, since there is other code
> > which maps the void * back to phys_addr_t (or, rather, to unsigned long).
> > It might be better to work around the problem for now by disabling support
> > for platforms where sizeof(phys_addr_t) > sizeof(void *).
> 
> I think it is dealt with in v3.
> - Dave
OK this does not work so I will submit a v4 which makes these
drivers depend on !X86_PAE
-Dave

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-12-04 12:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-02 17:33 [PATCH v2] staging: gpib: Fix i386 build issue Dave Penkler
2024-12-02 17:48 ` Guenter Roeck
2024-12-03  8:43   ` Dave Penkler
2024-12-04 12:01     ` Dave Penkler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).