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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230621190834.GA842758@dev-arch.thelio-3990X>
Date:   Wed, 21 Jun 2023 19:08:34 +0000
From:   Nathan Chancellor <nathan@...nel.org>
To:     Baoquan He <bhe@...hat.com>
Cc:     kernel test robot <lkp@...el.com>, linux-kernel@...r.kernel.org,
        llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
        linux-arch@...r.kernel.org, linux-mm@...ck.org, arnd@...db.de,
        hch@....de, christophe.leroy@...roup.eu, rppt@...nel.org,
        willy@...radead.org, agordeev@...ux.ibm.com,
        wangkefeng.wang@...wei.com, schnelle@...ux.ibm.com,
        David.Laight@...lab.com, shorne@...il.com, deller@....de,
        glaubitz@...sik.fu-berlin.de, Brian Cain <bcain@...cinc.com>,
        linux-hexagon@...r.kernel.org
Subject: Re: [PATCH v7 02/19] hexagon: mm: Convert to GENERIC_IOREMAP

On Wed, Jun 21, 2023 at 04:50:53PM +0800, Baoquan He wrote:
> Hi,
> 
> On 06/21/23 at 10:15am, kernel test robot wrote:
> > Hi Baoquan,
> > 
> > kernel test robot noticed the following build errors:
> > 
> > [auto build test ERROR on akpm-mm/mm-everything]
> > 
> > url:    https://github.com/intel-lab-lkp/linux/commits/Baoquan-He/asm-generic-iomap-h-remove-ARCH_HAS_IOREMAP_xx-macros/20230620-212135
> > base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> > patch link:    https://lore.kernel.org/r/20230620131356.25440-3-bhe%40redhat.com
> > patch subject: [PATCH v7 02/19] hexagon: mm: Convert to GENERIC_IOREMAP
> > config: hexagon-randconfig-r041-20230620 (https://download.01.org/0day-ci/archive/20230621/202306211030.DioMEPhl-lkp@intel.com/config)
> > compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
> > reproduce: (https://download.01.org/0day-ci/archive/20230621/202306211030.DioMEPhl-lkp@intel.com/reproduce)
> > 
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@...el.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202306211030.DioMEPhl-lkp@intel.com/
> > 
> > All errors (new ones prefixed by >>):
> > 
> > >> arch/hexagon/kernel/hexagon_ksyms.o: error: local symbol ioremap was exported
> 
> I followed steps in your reproduce link, didn't reproduce the error as
> above line reported. I can still see those PCI_IOMAP warning, however
> they will disappear when rebuilding. The clone3 warning can always ben
> seen. I didn't see the symbol ioremap error. Could you double check if
> anything missed in steps?
> 
> [root@...l-pem620-01 linux]# COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash
> Compiler will be installed in /root/0day
> make --keep-going LLVM=1 CROSS_COMPILE=hexagon-linux- LLVM_IAS=1 --jobs=48 W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash
> make[1]: Entering directory '/root/linux/build_dir'
>   GEN     Makefile
> ld.lld: /lib64/libtinfo.so.6: no version information available (required by ld.lld)

Hmmm, seems like a dynamic linking issue, likely because either libtinfo
is not available or the version on your system is older or newer than
the one that the compiler was built with.

Intel folks, you can opt out of this particular library dependency with
'-DLLVM_ENABLE_TERMINFO=OFF' to cmake, which will make it easier for
others to use it; the compiler can still output color on most terminals
even without libtinfo.

> tools/testing/selftests/arm64/tags/.gitignore: warning: ignored by one of the .gitignore files
> tools/testing/selftests/arm64/tags/Makefile: warning: ignored by one of the .gitignore files
> tools/testing/selftests/arm64/tags/run_tags_test.sh: warning: ignored by one of the .gitignore files
> tools/testing/selftests/arm64/tags/tags_test.c: warning: ignored by one of the .gitignore files
> tools/testing/selftests/kvm/.gitignore: warning: ignored by one of the .gitignore files
> tools/testing/selftests/kvm/Makefile: warning: ignored by one of the .gitignore files
> tools/testing/selftests/kvm/config: warning: ignored by one of the .gitignore files
> tools/testing/selftests/kvm/settings: warning: ignored by one of the .gitignore files
>   CALL    ../scripts/checksyscalls.sh
> clang: /lib64/libtinfo.so.6: no version information available (required by clang)
> <stdin>:1519:2: warning: syscall clone3 not implemented [-W#warnings]
>  1519 | #warning syscall clone3 not implemented
>       |  ^
> 1 warning generated.
> make[1]: Leaving directory '/root/linux/build_dir'
> [root@...l-pem620-01 linux]# 
> 
> 

I am able to reproduce this with the kernel.org LLVM builds that I do,
which should not have that library dependency:

https://mirrors.edge.kernel.org/pub/tools/llvm/

$ curl -LSso .config https://download.01.org/0day-ci/archive/20230621/202306211030.DioMEPhl-lkp@intel.com/config

$ make -skj"$(nproc)" ARCH=hexagon LLVM=$(realpath llvm-16.0.6-x86_64/bin)/ olddefconfig all
...
make[5]: *** No rule to make target 'arch/hexagon/mm/ioremap.o', needed by 'arch/hexagon/mm/built-in.a'.
...
arch/hexagon/kernel/hexagon_ksyms.o: error: local symbol ioremap was exported
...

The first issue is resolved with:

diff --git a/arch/hexagon/mm/Makefile b/arch/hexagon/mm/Makefile
index 49911a906fd0..ba4b04d962d6 100644
--- a/arch/hexagon/mm/Makefile
+++ b/arch/hexagon/mm/Makefile
@@ -3,5 +3,5 @@
 # Makefile for Hexagon memory management subsystem
 #
 
-obj-y := init.o ioremap.o uaccess.o vm_fault.o cache.o
+obj-y := init.o uaccess.o vm_fault.o cache.o
 obj-y += copy_to_user.o copy_from_user.o vm_tlb.o

For the second issue, it seems that ioremap is exported in
arch/hexagon/kernel/hexagon_ksyms.c but ioremap() is a static inline
function with CONFIG_GENERIC_IOREMAP. I think we can just remove the
ioremap and iounmap exports now, as ioremap() calls ioremap_prot(),
which is exported, and iounmap() is exported in mm/ioremap.c.

diff --git a/arch/hexagon/kernel/hexagon_ksyms.c b/arch/hexagon/kernel/hexagon_ksyms.c
index ec56ce2d92a2..36a80e31d187 100644
--- a/arch/hexagon/kernel/hexagon_ksyms.c
+++ b/arch/hexagon/kernel/hexagon_ksyms.c
@@ -14,12 +14,10 @@
 EXPORT_SYMBOL(__clear_user_hexagon);
 EXPORT_SYMBOL(raw_copy_from_user);
 EXPORT_SYMBOL(raw_copy_to_user);
-EXPORT_SYMBOL(iounmap);
 EXPORT_SYMBOL(__vmgetie);
 EXPORT_SYMBOL(__vmsetie);
 EXPORT_SYMBOL(__vmyield);
 EXPORT_SYMBOL(empty_zero_page);
-EXPORT_SYMBOL(ioremap);
 EXPORT_SYMBOL(memcpy);
 EXPORT_SYMBOL(memset);
 

With those two diffs, the randconfig the robot provides builds and links
without any errors.

Cheers,
Nathan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ