On Mon, Jun 10, 2013 at 09:52:44PM +0800, Jeff Chua wrote: > > > According to Documentation/binfmt_misc.txt, the 'magic' and 'mask' > can be set by echoing it to /proc/sys/fs/binfmt_misc/register. > > Here's the problem I can across while working on ARM. > > # echo > ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > >/proc/sys/fs/binfmt_misc/register > > # cat /proc/sys/fs/binfmt_misc/arm > wrong ... > magic 7f454c46010101 > mask ffffffffffffff > > right ... > magic 7f454c4601010100000000000000000002002800 > mask ffffffffffffff00fffffffffffffffffeffffff > > > binfmt_misc is truncating e->size, so once ARM's magic is loaded, > 32-bit x86 can no longer run. > > Here's a patch for it. It's looking for the delimiter ":" instead of > \0. Now 32-bit x86 can run concurrent while qemu-arm is handling > ARM's magic.
Patch is complete BS and I really wonder what kernel have you observed that bug on - with mainline on amd64 your example yields root@kvm-amd64:~# cat /proc/sys/fs/binfmt_misc/arm enabled interpreter /usr/bin/qemu-arm-static flags: offset 0 magic 7f454c4601010100000000000000000002002800 mask ffffffffffffff00fffffffffffffffffeffffff A reproducer, please... As for the memcmp() Linus has suggested - it's !Magic case, i.e. what we are comparing there is not the file contents, it's the extension. IOW, strcmp() is the right thing to use there - pathnames do not contain NULs in the middle... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/