Skip to content

clang-20 built kernel fails to boot with UBSAN_ALIGNMENT=y while gcc-14 built kernel boots ok with UBSAN_ALIGNMENT=y (v6.17-rc2, ppc64) #2119

@ernsteiswuerfel

Description

@ernsteiswuerfel

Apart from reporting many UBSAN: misaligned-access cases the kernel also fails booting with several BUG: Unable to handle kernel instruction fetch and Oops: Kernel access of bad area, sig: 11 [#1] inbetween v6.17-rc2 fails to boot on my PowerMac G5 and Talos II:

[...]
kernel tried to execute exec-protected page (c0000000040ab100) - exploit attempt? (uid: 0)
systemd[1]: Mounting Kernel Debug File System...
BUG: Unable to handle kernel instruction fetch
Faulting instruction address: 0xc0000000040ab100
Oops: Kernel access of bad area, sig: 11 [#1]
BE PAGE_SIZE=4K MMU=Hash  SMP NR_CPUS=4 PowerMac
Modules linked in:
------------[ cut here ]------------
UBSAN: misaligned-access in kernel/module/main.c:3890:2
member access within misaligned address c00000000621f2a8 for type 'struct module'
kernel tried to execute exec-protected page (c0000000040ab100) - exploit attempt? (uid: 0)
which requires 128 byte alignment
CPU: 0 UID: 0 PID: 120 Comm: (mount) Tainted: G                 N  6.17.0-rc2-PMacG5 #3 PREEMPTLAZY 
Tainted: [N]=TEST
Hardware name: PowerMac11,2 PPC970MP 0x440101 PowerMac
Call Trace:
[c00000000c9cb0e0] [c000000002d54e48] dump_stack_lvl+0x5c/0xe4 (unreliable)
[c00000000c9cb120] [c000000001a3ad7c] ubsan_epilogue+0x1c/0x70
[c00000000c9cb190] [c000000001a3a2bc] ubsan_type_mismatch_common+0x2bc/0x2e0
[c00000000c9cb230] [c000000001a3a32c] __ubsan_handle_type_mismatch_v1+0x4c/0x70
[c00000000c9cb270] [c0000000003dba40] print_modules+0x160/0x300
[c00000000c9cb370] [c00000000003c898] __die+0x118/0x1b0
[c00000000c9cb410] [c00000000003399c] die+0x19c/0x2c0
[c00000000c9cb490] [c0000000000a84bc] bad_page_fault+0x31c/0x7f0
[c00000000c9cb530] [c0000000000b8b98] do_hash_fault+0x298/0x7c0
[c00000000c9cb5b0] [c000000000007c54] instruction_access_common_virt+0x194/0x1a0
---- interrupt: 400 at __long_branch_path_put+0x0/0x20
NIP:  c0000000040ab100 LR: c000000002b22e98 CTR: c0000000003147b8
REGS: c00000000c9cb5e0 TRAP: 0400   Tainted: G                 N   (6.17.0-rc2-PMacG5)
MSR:  9000000010009032 <SF,HV,EE,ME,IR,DR,RI>  CR: 22222220  XER: 00000000
IRQMASK: 0 
GPR00: c000000002b22e8c c00000000c9cb880 c000000003468cb0 c00000000c9cb8d0 
GPR04: fffffffffffffcff 0000000000000000 0000000000000000 0000000000000000 
GPR08: 000000000000167e 0000000000000000 0000000000000001 c000000006573810 
GPR12: 0000000022222220 c000000007516000 c00000000731d2f0 0000000000000000 
GPR16: c0000000073166a0 c00000000a19f1e8 c00000000731d070 c00000000731d090 
GPR20: c00000000731d0b0 c00000000731be90 c00000000731beb0 c00000000731d0f0 
GPR24: c00000000731d0d0 c00000000731d150 c00000000731d130 c0000000043b7580 
GPR28: c0000000043b7600 c000000007511f80 c00000000c9cb8d0 c00000000731c410 
NIP [c0000000040ab100] __long_branch_path_put+0x0/0x20
LR [c000000002b22e98] unix_find_other+0x6b8/0xdb0
---- interrupt: 400
[c00000000c9cb880] [c000000002b22e8c] unix_find_other+0x6ac/0xdb0 (unreliable)
[c00000000c9cb970] [c000000002b180e8] unix_stream_connect+0x258/0x1200
[c00000000c9cbac0] [c0000000023f5b3c] __sys_connect_file+0xec/0x420
[c00000000c9cbb20] [c0000000023f5f40] __sys_connect+0xd0/0x140
[c00000000c9cbbf0] [c0000000023f5fd0] sys_connect+0x20/0x40
[c00000000c9cbc10] [c0000000000436e0] system_call_exception+0x260/0x11d0
[c00000000c9cbe50] [c00000000000b4d4] system_call_common+0xf4/0x258
---- interrupt: c00 at 0x3fff9244e094
NIP:  00003fff9244e094 LR: 00003fff9244e0f0 CTR: 0000000000000000
REGS: c00000000c9cbe80 TRAP: 0c00   Tainted: G                 N   (6.17.0-rc2-PMacG5)
MSR:  900000000200f032 <SF,HV,VEC,EE,PR,FP,ME,IR,DR,RI>  CR: 2408248c  XER: 00000000
IRQMASK: 0 
GPR00: 0000000000000148 00003fffe8ec90f0 00003fff925e7100 0000000000000003 
GPR04: 00003fffe8ec92c8 000000000000001e 0000000000000000 0000000000000000 
GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 
GPR12: 0000000000000000 00003fff92e43f60 00003fffe8ec9e18 000000012b58a480 
GPR16: 00003fffe8ec9898 0000000000000000 0000000000000000 0000000000000000 
GPR20: 000000012b58bad0 00003fffe8ec9810 0000000000000000 0000000000000003 
GPR24: 0000000000000003 0000000000000003 00000000ffffffff 00000000ffffffff 
GPR28: 00003fffe8ec92c8 0000000000000003 0000000123dc0250 000000000000001b 
NIP [00003fff9244e094] 0x3fff9244e094
LR [00003fff9244e0f0] 0x3fff9244e0f0
---- interrupt: c00
---[ end trace ]---
BUG: Unable to handle kernel instruction fetch

Faulting instruction address: 0xc0000000040ab100
CPU: 0 UID: 0 PID: 120 Comm: (mount) Tainted: G                 N  6.17.0-rc2-PMacG5 #3 PREEMPTLAZY 
Tainted: [N]=TEST
Hardware name: PowerMac11,2 PPC970MP 0x440101 PowerMac
NIP:  c0000000040ab100 LR: c000000002b22e98 CTR: c0000000003147b8
REGS: c00000000c9cb5e0 TRAP: 0400   Tainted: G                 N   (6.17.0-rc2-PMacG5)
MSR:  9000000010009032 <SF,HV,EE,ME,IR,DR,RI>  CR: 22222220  XER: 00000000
IRQMASK: 0 
GPR00: c000000002b22e8c c00000000c9cb880 c000000003468cb0 c00000000c9cb8d0 
GPR04: fffffffffffffcff 0000000000000000 0000000000000000 0000000000000000 
GPR08: 000000000000167e 0000000000000000 0000000000000001 c000000006573810 
GPR12: 0000000022222220 c000000007516000 c00000000731d2f0 0000000000000000 
GPR16: c0000000073166a0 c00000000a19f1e8 c00000000731d070 c00000000731d090 
GPR20: c00000000731d0b0 c00000000731be90 c00000000731beb0 c00000000731d0f0 
GPR24: c00000000731d0d0 c00000000731d150 c00000000731d130 c0000000043b7580 
GPR28: c0000000043b7600 c000000007511f80 c00000000c9cb8d0 c00000000731c410 
NIP [c0000000040ab100] __long_branch_path_put+0x0/0x20
LR [c000000002b22e98] unix_find_other+0x6b8/0xdb0
Call Trace:
[c00000000c9cb880] [c000000002b22e8c] unix_find_other+0x6ac/0xdb0 (unreliable)
[c00000000c9cb970] [c000000002b180e8] unix_stream_connect+0x258/0x1200
[c00000000c9cbac0] [c0000000023f5b3c] __sys_connect_file+0xec/0x420
[c00000000c9cbb20] [c0000000023f5f40] __sys_connect+0xd0/0x140
[c00000000c9cbbf0] [c0000000023f5fd0] sys_connect+0x20/0x40
[c00000000c9cbc10] [c0000000000436e0] system_call_exception+0x260/0x11d0
[c00000000c9cbe50] [c00000000000b4d4] system_call_common+0xf4/0x258
---- interrupt: c00 at 0x3fff9244e094
NIP:  00003fff9244e094 LR: 00003fff9244e0f0 CTR: 0000000000000000
REGS: c00000000c9cbe80 TRAP: 0c00   Tainted: G                 N   (6.17.0-rc2-PMacG5)
MSR:  900000000200f032 <SF,HV,VEC,EE,PR,FP,ME,IR,DR,RI>  CR: 2408248c  XER: 00000000
IRQMASK: 0 
GPR00: 0000000000000148 00003fffe8ec90f0 00003fff925e7100 0000000000000003 
GPR04: 00003fffe8ec92c8 000000000000001e 0000000000000000 0000000000000000 
GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 
GPR12: 0000000000000000 00003fff92e43f60 00003fffe8ec9e18 000000012b58a480 
GPR16: 00003fffe8ec9898 0000000000000000 0000000000000000 0000000000000000 
GPR20: 000000012b58bad0 00003fffe8ec9810 0000000000000000 0000000000000003 
GPR24: 0000000000000003 0000000000000003 00000000ffffffff 00000000ffffffff 
GPR28: 00003fffe8ec92c8 0000000000000003 0000000123dc0250 000000000000001b 
NIP [00003fff9244e094] 0x3fff9244e094
LR [00003fff9244e0f0] 0x3fff9244e0f0
---- interrupt: c00
Code: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 <00000000> 00000000 00000000 00000000 
---[ end trace 0000000000000000 ]---

note: (mount)[120] exited with irqs disabled
Oops: Kernel access of bad area, sig: 11 [#2]
BE PAGE_SIZE=4K MMU=Hash  SMP NR_CPUS=4 PowerMac
Modules linked in:
CPU: 1 UID: 0 PID: 121 Comm: (mount) Tainted: G      D          N  6.17.0-rc2-PMacG5 #3 PREEMPTLAZY 
Tainted: [D]=DIE, [N]=TEST
Hardware name: PowerMac11,2 PPC970MP 0x440101 PowerMac
NIP:  c0000000040ab100 LR: c000000002b22e98 CTR: c0000000003147b8
REGS: c00000000465b620 TRAP: 0400   Tainted: G      D          N   (6.17.0-rc2-PMacG5)
MSR:  9000000010009032 <SF,HV,EE,ME,IR,DR,RI>  CR: 22222224  XER: 00000000
IRQMASK: 0 
GPR00: c000000002b22e8c c00000000465b8c0 c000000003468cb0 c00000000465b910 
GPR04: fffffffffffffcff 0000000000000000 0000000000000000 0000000000000000 
GPR08: 0000000000001684 0000000000000000 0000000000000001 c000000006573810 
GPR12: 0000000022222220 c00000000ffffc00 c00000000731d2f0 0000000000000000 
GPR16: c0000000073166a0 c00000000a19f1e8 c00000000731d070 c00000000731d090 
GPR20: c00000000731d0b0 c00000000731be90 c00000000731beb0 c00000000731d0f0 
GPR24: c00000000731d0d0 c00000000731d150 c00000000731d130 c0000000043b7580 
GPR28: c0000000043b7600 c000000007511f80 c00000000465b910 c00000000731c410 
NIP [c0000000040ab100] __long_branch_path_put+0x0/0x20
LR [c000000002b22e98] unix_find_other+0x6b8/0xdb0
Call Trace:
[c00000000465b8c0] [c000000002b22e8c] unix_find_other+0x6ac/0xdb0 (unreliable)
[c00000000465b9b0] [c000000002b180e8] unix_stream_connect+0x258/0x1200
[c00000000465bb00] [c0000000023f5b3c] __sys_connect_file+0xec/0x420
[c00000000465bb60] [c0000000023f5f40] __sys_connect+0xd0/0x140
[c00000000465bc30] [c0000000023f5fd0] sys_connect+0x20/0x40
[c00000000465bc50] [c0000000000436e0] system_call_exception+0x260/0x11d0
[c00000000465be50] [c00000000000b4d4] system_call_common+0xf4/0x258
---- interrupt: c00 at 0x3fffaf25e094
NIP:  00003fffaf25e094 LR: 00003fffaf25e0f0 CTR: 0000000000000000
REGS: c00000000465be80 TRAP: 0c00   Tainted: G      D          N   (6.17.0-rc2-PMacG5)
MSR:  900000000200f032 <SF,HV,VEC,EE,PR,FP,ME,IR,DR,RI>  CR: 2408248c  XER: 00000000
IRQMASK: 0 
GPR00: 0000000000000148 00003fffd26ae9f0 00003fffaf3f7100 0000000000000003 
GPR04: 00003fffd26aebc8 000000000000001e 0000000000000000 0000000000000000 
GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 
GPR12: 0000000000000000 00003fffafc45f60 00003fffd26af718 000000014e9b0480 
GPR16: 00003fffd26af198 0000000000000000 0000000000000000 0000000000000000 
GPR20: 000000014e9b1ad0 00003fffd26af110 0000000000000000 0000000000000003 
GPR24: 0000000000000003 0000000000000003 00000000ffffffff 00000000ffffffff 
GPR28: 00003fffd26aebc8 0000000000000003 00000001308c0250 000000000000001b 
NIP [00003fffaf25e094] 0x3fffaf25e094
LR [00003fffaf25e0f0] 0x3fffaf25e0f0
---- interrupt: c00
Code: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 <00000000> 00000000 00000000 00000000 
---[ end trace 0000000000000000 ]---
[...]

Same kernel built with GCC-14 boots fine with UBSAN_ALIGNMENT=y enabled (also reporting many misaligned accesses). Without UBSAN_ALIGNMENT both kernels boot fine, clang-20 and gcc-14 one.

Full dmesg and .config attached.

config_617-rc2_g5+clang.txt
config_617-rc2_g5+.txt
dmesg_617-rc2_g5+clang.txt
dmesg_617-rc2_g5+.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions