On Fri, May 5, 2017 at 7:13 PM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > On Fri, May 05, 2017 at 01:57:23PM +0200, Arnd Bergmann wrote: >> We get a warning about a broken pointer conversion on 64-bit architectures: >> >> drivers/message/i2o/i2o_config.c: In function 'i2o_cfg_passthru': >> drivers/message/i2o/i2o_config.c:893:19: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] >> (p->virt, (void __user *)sg[i].addr_bus, >> ^ >> drivers/message/i2o/i2o_config.c:953:10: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] >> ((void __user *)sg[j].addr_bus, sg_list[j].virt, >> ^ >> >> This has clearly never worked right, so we can add an #ifdef around the code. >> The driver was moved to staging in linux-4.0 and finally removed in 4.2, >> so upstream does not have a fix for it. >> >> The driver originally got this mostly right, though probably by accident. > > I fixed this in a different way, doing the cast to make things be quiet, > as was done in other places in the driver. You were copied on that > patch when it was added to my tree, right? I missed it when you sent it, but looking at it now, I think it introduces another warning, on 32-bit architectures: - (p->virt, (void __user *)sg[i].addr_bus, + (p->virt, (void __user *)(u64)sg[i].addr_bus, I think you need '(void __user *)(uintptr_t)sg[i].addr_bus' to shut up the warning for all builds. Arnd