Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> writes: > On Wed, 16 Oct 2024 14:07:31 +0200 > Sven Schnelle <svens@xxxxxxxxxxxxx> wrote: >> "Masami Hiramatsu (Google)" <mhiramat@xxxxxxxxxx> writes: >> I think that still has the issue that the size is encoded in the >> leftmost fields of the pointer, which doesn't work on all >> architectures. I reported this already in v15 >> (https://lore.kernel.org/all/yt9dmsjyx067.fsf@xxxxxxxxxxxxx/) > > Oops, thanks for reporting. I should missed that. > >> I haven't yet fully understood why this logic is needed, but the >> WARN_ON_ONCE triggers on s390. I'm assuming this fails because fp always >> has the upper bits of the address set on x86 (and likely others). As an >> example, in my test setup, fp is 0x8feec218 on s390, while it is >> 0xffff888100add118 in x86-kvm. > > Ah, so s390 kernel/user memory layout is something like 4G/4G? > Hmm, this encode expects the leftmost 4bit is filled. For the > architecture which has 32bit address space, we may be possible to > use "unsigned long long" for 'val' on shadow stack (and use the > first 32bit for fp and another 32bit for size). > > Anyway, I need to redesign it depending on architecture. Could you explain a bit more what redesign means? Thanks!