Andreas, good point; thanks for raising it. I have updated the test plan accordingly.
** Description changed: [Impact] The openafs module cannot be installed on the ARM platform, resulting in the following error: - insmod /lib/modules/6.5.0-1025-gcp/updates/dkms/openafs.ko + insmod /lib/modules/6.5.0-1025-gcp/updates/dkms/openafs.ko modprobe: ERROR: could not insert 'openafs': Exec format error [Fix] There is an upstream commit that addresses this issue: commit 2f260825b96b76556aba82fc364c841357a23a7d Author: Cheyenne Wills <[email protected]> Date: Thu Mar 28 12:51:46 2024 -0400 - Linux: Remove weak attribute for key_type_keyring + Linux: Remove weak attribute for key_type_keyring - The reference to the Linux symbol key_type_keyring uses a weak - attribute to assist in determining if the symbol is exported. This - method was introduced in commit: 'keyring-updated-20080310' (b7fb842b1c) - as a way to detect if the symbol was exported by the Linux kernel. A - later commit: 'linux-keyring-export-check-20090701' (4ca66112c2) - introduced an autoconf test that eliminated the need for using the weak - attribute, but the commit did not remove the attribute. + The reference to the Linux symbol key_type_keyring uses a weak + attribute to assist in determining if the symbol is exported. This + method was introduced in commit: 'keyring-updated-20080310' (b7fb842b1c) + as a way to detect if the symbol was exported by the Linux kernel. A + later commit: 'linux-keyring-export-check-20090701' (4ca66112c2) + introduced an autoconf test that eliminated the need for using the weak + attribute, but the commit did not remove the attribute. - On a Debian-12 system on ARM64 the use of the weak attribute in this - case causes an error when loading the kernel module: - "ERROR: could not insert 'openafs': Exec format error". - The error is due to the Linux module loader not supporting the - relocation entry type in the openafs kernel module for the - key_type_keyring. Further investigation showed that this problem could - occur with gcc-12 on a ARM64 system (see below for additional - information). + On a Debian-12 system on ARM64 the use of the weak attribute in this + case causes an error when loading the kernel module: + "ERROR: could not insert 'openafs': Exec format error". + The error is due to the Linux module loader not supporting the + relocation entry type in the openafs kernel module for the + key_type_keyring. Further investigation showed that this problem could + occur with gcc-12 on a ARM64 system (see below for additional + information). - The code in osi_groups.c uses a pointer, __key_type_keyring, to the - key_type_keyring. When this symbol is exported by the Linux kernel, the - loader would resolve the address and __key_type_keyring would contain - the address. If the key_type_keyring symbol was not exported, - __key_type_keyring would be set to NULL (due to the weak attribute - associated with key_type_keyring). + The code in osi_groups.c uses a pointer, __key_type_keyring, to the + key_type_keyring. When this symbol is exported by the Linux kernel, the + loader would resolve the address and __key_type_keyring would contain + the address. If the key_type_keyring symbol was not exported, + __key_type_keyring would be set to NULL (due to the weak attribute + associated with key_type_keyring). - Remove the weak attribute for key_type_keyring when the configure - test, introduced in the 4ca66112c2 commit, determines that the symbol - is exported (EXPORTED_KEY_TYPE_KEYRING is defined). When the symbol - isn't exported (pre Linux 2.6.22), just set the pointer, - __key_type_keyring to NULL. + Remove the weak attribute for key_type_keyring when the configure + test, introduced in the 4ca66112c2 commit, determines that the symbol + is exported (EXPORTED_KEY_TYPE_KEYRING is defined). When the symbol + isn't exported (pre Linux 2.6.22), just set the pointer, + __key_type_keyring to NULL. - NOTE: + NOTE: - The load error was reported on the openafs IRC channel by "clarkb" + The load error was reported on the openafs IRC channel by "clarkb" - The problem of loading the openafs kernel module was also observed - on a NixOS system as well, and is described in the NixOS ticket + The problem of loading the openafs kernel module was also observed + on a NixOS system as well, and is described in the NixOS ticket - https://github.com/NixOS/nixpkgs/issues/284501 + https://github.com/NixOS/nixpkgs/issues/284501 - A Debian-11 system did not have a problem loading the openafs kernel - module. Investigation of the differences between Debian-11 and Debian-12 - showed that the problem is due to a series of fixes in the toolchain - (in particular gcc-12) to address 'Cortex-A53 erratum #843419', which - deals with how the ARM64 ADRP instruction is used. With gcc-12, the - code generated uses a R_AARCH64_ADR_GOT for this particular case (which - isn't supported by the Linux kernel module loader). Gcc-11 created a - R_AARCH64_ABS64 relocation entry type for the symbol. + A Debian-11 system did not have a problem loading the openafs kernel + module. Investigation of the differences between Debian-11 and Debian-12 + showed that the problem is due to a series of fixes in the toolchain + (in particular gcc-12) to address 'Cortex-A53 erratum #843419', which + deals with how the ARM64 ADRP instruction is used. With gcc-12, the + code generated uses a R_AARCH64_ADR_GOT for this particular case (which + isn't supported by the Linux kernel module loader). Gcc-11 created a + R_AARCH64_ABS64 relocation entry type for the symbol. [Test Plan] + + For _both_ arm64 and amd64, + And _both_ -generic and -cloud kernels + (to verify the improvement and no regressions): + 1. Install the OpenAFS client using the command `sudo apt install openafs-client`. 2. Load the kernel module by running `sudo modprobe --verbose openafs`. 3. Confirm that the module loads successfully without any errors. [Where problems could occur] The patch removed the weak attribute from key_type_keyring. Previously, commit #4ca66112c2 (linux-keyring-export-check-20090701) introduced an autoconf test that made the weak attribute unnecessary, but the attribute was not removed at that time. If the patch causes a regression, it might prevent the openafs module from being installed successfully. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2077929 Title: Failed to insert openafs module on ARM platform: Exec format error To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/openafs/+bug/2077929/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
