tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Removal of compat-FreeBSD



Le 14/02/2015 08:40, David Holland a écrit :
> On Fri, Feb 13, 2015 at 07:05:00PM +0100, Maxime Villard wrote:
>  > > Our norms for significant changes are more or less about consensus or
>  > > preponderance of opinion.  So far you've said that you want to
>  > > remove/disable this, and a number of people have said they use it.  No
>  > > one else has spoke up in favor of disabling. 
>  > 
>  > Perhaps because I am the only one who read the code?
> 
> I just read the code. What's so horrible about it?

What is so horrible? Well, you're right, it no longer is. But since obvious
things apparently need some explanation:


	http://mail-index.netbsd.org/source-changes/2014/06/21/msg055758.html

This is a NULL pointer dereference, triggerable from userland. It was
introduced 6 years ago in this commit:

	http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/compat/freebsd/freebsd_sched.c?only_with_tag=MAIN#rev1.17

The funny thing is that a simple, *valid* call to sched_getparam() crashes the
system. Clearly, it means that in 6 years, nobody tested it. As I stated, we
should normally have received a bug report from someone, but we didn't. It
either means there's an insidious conspiracy against us, or, nobody uses it.


	http://mail-index.netbsd.org/source-changes/2014/10/10/msg059293.html

This is a bug that causes the kernel to read from a userland pointer. If it
points to kernel memory, it reads kernel memory; if it points to an unmapped
page, the kernel crashes. This bug was introduced in the first revision, 9
years ago. If in 9 years nobody can find such an obvious bug, it clearly
means nobody gives a shit about it.


The problem is that these bugs affect the i386 users, most of which don't
use compat_freebsd. This compatibility layer comes at the cost of security,
and is - as I/you said - very incomplete.

I understood that people need it for tw_cli, and that it is apparently the
*only* reason why we still have it. Therefore, I suggest we disable it by
default in the GENERIC kernels, simply to prevent users from being affected
by future bugs. tw_cli users can still recompile their kernel with
COMPAT_FREEBSD, or load the kernel module.

You might argue it will rot if we disable it by default. See: it has been
rotting for 10 years now.


> It's clearly old,
> and not very complete, but I don't see anything so terribly
> objectionable.
> 
> (other than that all the syscall marshalling code should be
> autogenerated; but that's a topic for a different bikeshed)
> 



Home | Main Index | Thread Index | Old Index