Hi Magnus, On Fri, 2024-12-06 at 16:39 +0100, Magnus Lindholm wrote: > It looks like the variable used as loop counter is the value put on the stack > overwriting the return value for scsi_host_dev_release. When adding > a reference to the address of this variable or when it is declared > volatile, stack > corruption does NOT occur. > > When examining the disassembly of the code generated from kernel/rcu/tree.o > the most significant difference I can see is that in the case of a > corrupted stack > the frame pointer register $fp is used to hold a reference to the loop > count variable > but in the case with no stack corruption a regular "saved register" is > used for the > reference. Is it possible that the frame pointer is somehow altered > during the execution > of the code? not really sure how linux/alpha/gcc treats the frame pointer. I've > tried altering -fomit-frame-pointer/-f-no-omit-frame-pointer but so > far not getting > anywhere with that... Could this maybe a compiler bug? What about building the kernel with an older GCC version from [1]? Adrian > [1] https://mirrors.edge.kernel.org/pub/tools/crosstool/ -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913