Btw, thinking more about the autofs patch, I realized that despite it all working well for Thomas in his case, it's fundamentally wrong. And it's not fundamentally wrong because of any ambiguities about the size of the structure: that structure is clearly 304 bytes on x86-64 (and most other platforms, buth 32-bit and 64-bit), but it's 300 bytes on x86-32 and m68k. No, the problem is that "is_compat_task()" is not the right check. It's not the task that *waits* for autofs that matters, it's that damn autofs daemon task. IOW, what we actually want to test is whether the other end of that autofs sbi->pipe is a compat task or not. And I have no idea how to do that. Can I assume that whoever does the original "mount()" system call is the daemon? It needs to have that pipe somehow.. Is there something that the daemon does early on that we can use to capture whether the daemon is a compat task or not? Ian, Peter, anybody who knows autofs? Is perhaps one of the ioctl's always done by the daemon, where we could then use "is_compat_task()" at that point to figure out whether it is going to expect the 300-byte packet or the 304-byte packet? We could just initialize sbi->v5_packet_size to the plain sizeof(), but when we see that ioctl and realize that the daemon is a x86-32 binary we'd reset the packet size to 300. Anyway, here's the patch again with a long explanation, but with a "THIS IS WRONG" comment in the code, and an explanation in the commit log. It works for Thomas, but it works for the wrong reasons - in his setup, all binaries are compat binaries, so "is_compat_task()" just happens to get the right value for the daemon too. But if you have a mixture of binaries, you might get the autofs *request* in a compat binary while the daemon is a 64-bit native x86-64 binary, or the other way around, and then this patch would use the wrong packet size to communicate with the daemon. Hmm? Linus