lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Thu, 9 Sep 2021 10:13:32 +0200
From:   Arnd Bergmann <arnd@...nel.org>
To:     Guenter Roeck <linux@...ck-us.net>
Cc:     Richard Henderson <rth@...ddle.net>,
        Ivan Kokshaysky <ink@...assic.park.msu.ru>,
        Matt Turner <mattst88@...il.com>,
        alpha <linux-alpha@...r.kernel.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] alpha: Declare virt_to_phys and virt_to_bus parameter as
 pointer to volatile

On Thu, Sep 9, 2021 at 7:00 AM Guenter Roeck <linux@...ck-us.net> wrote:
>
> Some drivers pass a pointer to volatile data to virt_to_bus() and
> virt_to_phys(). One exception is alpha. This results in a number
> of compile errors such as
>
> drivers/net/wan/lmc/lmc_main.c: In function 'lmc_softreset':
> drivers/net/wan/lmc/lmc_main.c:1782:50: error:
>         passing argument 1 of 'virt_to_bus' discards 'volatile'
>         qualifier from pointer target type
>
> drivers/atm/ambassador.c: In function 'do_loader_command':
> drivers/atm/ambassador.c:1747:58: error:
>         passing argument 1 of 'virt_to_bus' discards 'volatile'
>         qualifier from pointer target type
>
> Declare the parameter of virt_to_phys and virt_to_bus as pointer to volatile
> to fix the problem.
>
> Cc: Arnd Bergmann <arnd@...nel.org>
> Signed-off-by: Guenter Roeck <linux@...ck-us.net>

Acked-by: Arnd Bergmann <arnd@...db.de>

> ---
> We could instead try to modify the affected drivers, but both drivers
> use the buffer to communicate with the chip, so that would require lots
> of typecasts there. Another option would be to disable affected drivers
> for alpha, but that seems undesirable.
> Other ideas welcome.

Your patch is the obvious workaround, as this makes alpha behave the
same way as all the other architectures.

Drivers using virt_to_bus() are already nonportable, so we could also
decide to go through all users to see which ones are ready to be
retired, and go through the architectures to see which ones actually
still require drivers that use virt_to_bus(), removing the interface from
the others. The ones I see are

arch/alpha/Kconfig:     select VIRT_TO_BUS
arch/h8300/Kconfig:     select VIRT_TO_BUS
arch/ia64/Kconfig:      select VIRT_TO_BUS
arch/m68k/Kconfig:      select VIRT_TO_BUS
arch/microblaze/Kconfig:        select VIRT_TO_BUS
arch/mips/Kconfig:      select VIRT_TO_BUS
arch/parisc/Kconfig:    select VIRT_TO_BUS
arch/powerpc/Kconfig:   select VIRT_TO_BUS                      if !PPC64
arch/x86/Kconfig:       select VIRT_TO_BUS
arch/xtensa/Kconfig:    select VIRT_TO_BUS

drivers/atm/Kconfig:    depends on PCI && VIRT_TO_BUS
drivers/atm/Kconfig:    depends on PCI && VIRT_TO_BUS
drivers/atm/Kconfig:    depends on PCI && VIRT_TO_BUS
drivers/atm/Kconfig:    depends on PCI && VIRT_TO_BUS
drivers/media/pci/sta2x11/Kconfig:      depends on PCI && VIDEO_V4L2
&& VIRT_TO_BUS && I2C
drivers/net/appletalk/Kconfig:  depends on DEV_APPLETALK && (ISA ||
EISA) && ISA_DMA_API && VIRT_TO_BUS
drivers/net/ethernet/dec/tulip/Kconfig: depends on VIRT_TO_BUS ||
ALPHA || PPC || SPARC
drivers/net/wan/Kconfig:        depends on ISA && m && ISA_DMA_API &&
INET && HDLC && VIRT_TO_BUS
drivers/net/wan/Kconfig:        depends on ISA && m && ISA_DMA_API &&
HDLC && VIRT_TO_BUS
drivers/net/wan/Kconfig:        depends on PCI && VIRT_TO_BUS && HDLC
drivers/net/wan/Kconfig:        depends on ISA && m && ISA_DMA_API &&
INET && HDLC && VIRT_TO_BUS
drivers/scsi/Kconfig:   depends on SCSI && PCI && VIRT_TO_BUS
drivers/scsi/Kconfig:   depends on PCI && SCSI && VIRT_TO_BUS
drivers/vme/bridges/Kconfig:    depends on VIRT_TO_BUS

I think we can drop VIRT_TO_BUS from everything other
than x86-32, m68k and ppc32, and fix the tulip and xlr_net
drivers to not use it.

        Arnd

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ