Re: [BUG] binfmt_elf: get_user() called in vma_dump_size() afterset_fs(KERNEL_DS)

From: Linus Torvalds
Date: Fri Feb 06 2009 - 17:21:01 EST




On Fri, 6 Feb 2009, Roland McGrath wrote:
>
> set_fs is quite cheap at least on most machines. So a pair of set_fs calls
> around that get_user call doesn't seem so bad. OTOH, on the machines where
> this actually matters at all (maybe just sparc, arm, s390?) it is
> presumably (much?) more costly. But it seems like the best solution, and
> certainly is straightforward.

Yes, I suspect just surrounding the load with set_fs(USER_DS) and then
set_fs(KERNEL_DS) to put it back is likely the right thing to do.

The address is "safe" in that it does come from the vma, but we obviously
do play games with things like the call gate mappings etc. Should we also
perhaps do this only if the vma is marked readable and executable? That
way we could avoid taking unnecessary faults there.

Probably doesn't really matter.

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/