On Mon, Jun 10, 2013 at 6:52 AM, Jeff Chua <jeff.chua.li...@gmail.com> wrote: > > binfmt_misc is truncating e->size, so once ARM's magic is loaded, 32-bit x86 > can no longer run.
That patch is really ugly. And it doesn't make much sense. Where does it now turn the hex into binary? And where does it check that the mask is the same size as the data? You have changed the meaning of "esize" to be the size of the original string, which is just wrong, and makes no sense, since it has to be the same value for magic and for mask. So the patch seems to make things just worse. That said, there does seem to be *real* bugs, like "check_file()", that does if (p && !strcmp(e->magic, p + 1)) which seems wrong. I think it should use "memcmp( ..., e->size)" instead. And from your /proc output, esize does get truncated. But where exactly does that happen? Is string_unescape() just broken? The code *shouldn't* look at zeroes in the magic/mask strings, because they should all be treated as memory regions with size 'e->size'. Linus -- 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/