diff mbox series

[net,v2] rust: net::phy fix module autoloading

Message ID 20241212130015.238863-1-fujita.tomonori@gmail.com (mailing list archive)
State Accepted
Commit 94901b7a74d82bfd30420f1d9d00898278fdc8bf
Delegated to: Netdev Maintainers
Headers show
Series [net,v2] rust: net::phy fix module autoloading | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag present in non-next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers fail 1 blamed authors not CCed: masahiroy@kernel.org; 1 maintainers not CCed: masahiroy@kernel.org
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/checkpatch warning WARNING: line length of 101 exceeds 80 columns WARNING: line length of 83 exceeds 80 columns
netdev/build_clang_rust fail Link
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-12-13--15-00 (tests: 795)

Commit Message

FUJITA Tomonori Dec. 12, 2024, 1 p.m. UTC
The alias symbol name was renamed. Adjust module_phy_driver macro to
create the proper symbol name to fix module autoloading.

Fixes: 054a9cd395a7 ("modpost: rename alias symbol for MODULE_DEVICE_TABLE()")
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
---
 rust/kernel/net/phy.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


base-commit: 51a00be6a0994da2ba6b4ace3b7a0d9373b4b25e

Comments

Paolo Abeni Dec. 17, 2024, 8:54 a.m. UTC | #1
On 12/12/24 14:00, FUJITA Tomonori wrote:
> The alias symbol name was renamed. Adjust module_phy_driver macro to
> create the proper symbol name to fix module autoloading.
> 
> Fixes: 054a9cd395a7 ("modpost: rename alias symbol for MODULE_DEVICE_TABLE()")
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>

You should have retained the acked-by tag that Miguel provided on V1. No
need to repost, just for future memory.

@Jakub: I still can't reproduce the nipa (rust) build failures locally.

/P
patchwork-bot+netdevbpf@kernel.org Dec. 17, 2024, 9 a.m. UTC | #2
Hello:

This patch was applied to netdev/net.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Thu, 12 Dec 2024 22:00:15 +0900 you wrote:
> The alias symbol name was renamed. Adjust module_phy_driver macro to
> create the proper symbol name to fix module autoloading.
> 
> Fixes: 054a9cd395a7 ("modpost: rename alias symbol for MODULE_DEVICE_TABLE()")
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
> ---
>  rust/kernel/net/phy.rs | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> [...]

Here is the summary with links:
  - [net,v2] rust: net::phy fix module autoloading
    https://git.kernel.org/netdev/net/c/94901b7a74d8

You are awesome, thank you!
Jakub Kicinski Dec. 17, 2024, 2:54 p.m. UTC | #3
On Tue, 17 Dec 2024 09:54:11 +0100 Paolo Abeni wrote:
> @Jakub: I still can't reproduce the nipa (rust) build failures locally.

I'll look into it. Just in case you already investigated the same thing
I would - have you tried the rust build script from NIPA or just to
build manually? The build VM is using Fedora 41, IIUC it should have
new enough Rust compiler but I may have messed something up trying
to install the latest compiler manually...
Paolo Abeni Dec. 17, 2024, 3:11 p.m. UTC | #4
On 12/17/24 15:54, Jakub Kicinski wrote:
> On Tue, 17 Dec 2024 09:54:11 +0100 Paolo Abeni wrote:
>> @Jakub: I still can't reproduce the nipa (rust) build failures locally.
> 
> I'll look into it. Just in case you already investigated the same thing
> I would - have you tried the rust build script from NIPA or just to
> build manually? 

I tried both (I changed the build dir in the script to fit my setup). I
could not see the failure in any case - on top of RHEL 9.

/P
Jakub Kicinski Dec. 17, 2024, 3:44 p.m. UTC | #5
On Tue, 17 Dec 2024 16:11:29 +0100 Paolo Abeni wrote:
> On 12/17/24 15:54, Jakub Kicinski wrote:
> > On Tue, 17 Dec 2024 09:54:11 +0100 Paolo Abeni wrote:  
> >> @Jakub: I still can't reproduce the nipa (rust) build failures locally.  
> > 
> > I'll look into it. Just in case you already investigated the same thing
> > I would - have you tried the rust build script from NIPA or just to
> > build manually?   
> 
> I tried both (I changed the build dir in the script to fit my setup). I
> could not see the failure in any case - on top of RHEL 9.

I think I figured it out, you must have old clang. On Fedora 41
CFI_CLANG defaults to y and prevents RUST from getting enabled.
Jakub Kicinski Dec. 17, 2024, 4:51 p.m. UTC | #6
On Tue, 17 Dec 2024 07:44:00 -0800 Jakub Kicinski wrote:
> On Tue, 17 Dec 2024 16:11:29 +0100 Paolo Abeni wrote:
> > > I'll look into it. Just in case you already investigated the same thing
> > > I would - have you tried the rust build script from NIPA or just to
> > > build manually?     
> > 
> > I tried both (I changed the build dir in the script to fit my setup). I
> > could not see the failure in any case - on top of RHEL 9.  
> 
> I think I figured it out, you must have old clang. On Fedora 41
> CFI_CLANG defaults to y and prevents RUST from getting enabled.

Still hitting a problem in module signing. 
Rust folks does this ring a bell?

make[4]: *** Deleting file 'certs/signing_key.pem'
  GENKEY  certs/signing_key.pem
....+.........+++++
-----
80728E46C07F0000:error:03000098:digital envelope routines:do_sigver_init:invalid digest:crypto/evp/m_sigver.c:342:
make[4]: *** [../certs/Makefile:53: certs/signing_key.pem] Error 1
make[4]: *** Waiting for unfinished jobs....

allmodconfig without Rust builds fine with both GCC and clang.

build flags: LLVM=1
config: https://paste.centos.org/view/0555e9dd
OS: Fedora 41
FUJITA Tomonori Dec. 18, 2024, 2:24 a.m. UTC | #7
On Tue, 17 Dec 2024 08:51:24 -0800
Jakub Kicinski <kuba@kernel.org> wrote:

> On Tue, 17 Dec 2024 07:44:00 -0800 Jakub Kicinski wrote:
>> On Tue, 17 Dec 2024 16:11:29 +0100 Paolo Abeni wrote:
>> > > I'll look into it. Just in case you already investigated the same thing
>> > > I would - have you tried the rust build script from NIPA or just to
>> > > build manually?     
>> > 
>> > I tried both (I changed the build dir in the script to fit my setup). I
>> > could not see the failure in any case - on top of RHEL 9.  
>> 
>> I think I figured it out, you must have old clang. On Fedora 41
>> CFI_CLANG defaults to y and prevents RUST from getting enabled.
> 
> Still hitting a problem in module signing. 
> Rust folks does this ring a bell?
> 
> make[4]: *** Deleting file 'certs/signing_key.pem'
>   GENKEY  certs/signing_key.pem
> ....+.........+++++
> -----
> 80728E46C07F0000:error:03000098:digital envelope routines:do_sigver_init:invalid digest:crypto/evp/m_sigver.c:342:
> make[4]: *** [../certs/Makefile:53: certs/signing_key.pem] Error 1
> make[4]: *** Waiting for unfinished jobs....

Generating a key (openssl command) failed?

> allmodconfig without Rust builds fine with both GCC and clang.
> 
> build flags: LLVM=1
> config: https://paste.centos.org/view/0555e9dd
> OS: Fedora 41

CONFIG_MODULE_SIG_HASH is same on rust build and non rust build?

Looks like it's the only kernel config option that might change the
command behavior.

I can't reproduce the error with the config on Ubuntu 24.04.
Paolo Abeni Dec. 18, 2024, 10:04 a.m. UTC | #8
On 12/17/24 17:51, Jakub Kicinski wrote:
> On Tue, 17 Dec 2024 07:44:00 -0800 Jakub Kicinski wrote:
>> On Tue, 17 Dec 2024 16:11:29 +0100 Paolo Abeni wrote:
>>>> I'll look into it. Just in case you already investigated the same thing
>>>> I would - have you tried the rust build script from NIPA or just to
>>>> build manually?     
>>>
>>> I tried both (I changed the build dir in the script to fit my setup). I
>>> could not see the failure in any case - on top of RHEL 9.  
>>
>> I think I figured it out, you must have old clang. On Fedora 41
>> CFI_CLANG defaults to y and prevents RUST from getting enabled.
> 
> Still hitting a problem in module signing. 
> Rust folks does this ring a bell?
> 
> make[4]: *** Deleting file 'certs/signing_key.pem'
>   GENKEY  certs/signing_key.pem
> ....+.........+++++
> -----
> 80728E46C07F0000:error:03000098:digital envelope routines:do_sigver_init:invalid digest:crypto/evp/m_sigver.c:342:
> make[4]: *** [../certs/Makefile:53: certs/signing_key.pem] Error 1
> make[4]: *** Waiting for unfinished jobs....
> 
> allmodconfig without Rust builds fine with both GCC and clang.

FTR, I got a similar error (even without RUST) when I had

CONFIG_MODULE_SIG_HASH="sha1"

I moved to

CONFIG_MODULE_SIG_HASH="sha256"

since a while, and that fixed the issue for me (also
CONFIG_MODULE_SIG_SHA256=y is needed).

/P
Jakub Kicinski Dec. 18, 2024, 7:58 p.m. UTC | #9
On Wed, 18 Dec 2024 11:04:25 +0100 Paolo Abeni wrote:
> >> I think I figured it out, you must have old clang. On Fedora 41
> >> CFI_CLANG defaults to y and prevents RUST from getting enabled.  
> > 
> > Still hitting a problem in module signing. 
> > Rust folks does this ring a bell?
> > 
> > make[4]: *** Deleting file 'certs/signing_key.pem'
> >   GENKEY  certs/signing_key.pem
> > ....+.........+++++
> > -----
> > 80728E46C07F0000:error:03000098:digital envelope routines:do_sigver_init:invalid digest:crypto/evp/m_sigver.c:342:
> > make[4]: *** [../certs/Makefile:53: certs/signing_key.pem] Error 1
> > make[4]: *** Waiting for unfinished jobs....
> > 
> > allmodconfig without Rust builds fine with both GCC and clang.  
> 
> FTR, I got a similar error (even without RUST) when I had
> 
> CONFIG_MODULE_SIG_HASH="sha1"
> 
> I moved to
> 
> CONFIG_MODULE_SIG_HASH="sha256"
> 
> since a while, and that fixed the issue for me (also
> CONFIG_MODULE_SIG_SHA256=y is needed).

Oh, some form of forced SHA1 deprecation in Fedora 41 possibly?
I switched to sha256 and that fixes the issue. We'll find out
if Rust is really fixed next time a Rust patch comes :)
diff mbox series

Patch

diff --git a/rust/kernel/net/phy.rs b/rust/kernel/net/phy.rs
index b89c681d97c0..2fbfb6a94c11 100644
--- a/rust/kernel/net/phy.rs
+++ b/rust/kernel/net/phy.rs
@@ -860,7 +860,7 @@  const fn as_int(&self) -> u32 {
 /// ];
 /// #[cfg(MODULE)]
 /// #[no_mangle]
-/// static __mod_mdio__phydev_device_table: [::kernel::bindings::mdio_device_id; 2] = _DEVICE_TABLE;
+/// static __mod_device_table__mdio__phydev: [::kernel::bindings::mdio_device_id; 2] = _DEVICE_TABLE;
 /// ```
 #[macro_export]
 macro_rules! module_phy_driver {
@@ -883,7 +883,7 @@  macro_rules! module_phy_driver {
 
         #[cfg(MODULE)]
         #[no_mangle]
-        static __mod_mdio__phydev_device_table: [$crate::bindings::mdio_device_id;
+        static __mod_device_table__mdio__phydev: [$crate::bindings::mdio_device_id;
             $crate::module_phy_driver!(@count_devices $($dev),+) + 1] = _DEVICE_TABLE;
     };