[PATCH] removing COMPAT_43 from the linuxolator
David P. Reese Jr.
daver at gomerbud.com
Fri Aug 22 11:35:15 PDT 2003
On Fri, Aug 22, 2003 at 10:44:11AM -0700, Matthew Dillon wrote:
> Hi David! I took a look at it. Not bad, but there is a rather serious
> issue with modifying the structure in userspace and that is the fact
> that, well, you are modifying the structure in userspace and exposing
> your changes to the userland program. Programs will mostly expect these
> structures to not be modified by the system call, and it is just luck
> that it didn't break anything.
I realized this the hard way and tried to code around it. My original plan
was to do this work to eventually rip out COMPAT_43 without changing the
native syscall code. I tried to find all of the cases where I would have
to un-modify userland structures for the code to work. After doing such
work, I fully realize that it's a shady hack and could be handled more
elegantly with a more comprehensive plan.
> What I recommend you do instead is to separate out the copyin operation
> in the native syscall code. This has already been done for a number of
> system calls such as nanosleep(), which takes the main system call
> entry point as 'nanosleep()', copies stuff in, and then calls
> nanosleep1() with in-kernel structures as arguments.
That would make life much easier. It looks like you have to do this anyway
in order to implement async syscalls.
> Ultimately I think we will need to do this sort of separation for all
> system calls. The idea was bandied about a bit in the FreeBSD lists
> a while back but due to infighting I don't think it was ever implemented.
> We don't have that problem here (at least not yet!).
This is the whole reason why I'm interested in DragonFly. Very little
politics, lots of code.
> If the work is a little more then you have time for I would be happy to
> split the work with you, just point out the native syscall functions you
> want me to split and I'll split them.
I'd like to do as much of the work as possible. However, I realize that it
may be holding back another project until it is done. I should have a couple
syscalls separated by the end of the weekend.
> Matthew Dillon
> <dillon at xxxxxxxxxxxxx>
>
>
> :In preparation for work on COMPAT_43 (which is almost complete on my end),
> :this patch makes COMPAT_LINUX independant of COMPAT_43. Before it is
> :submitted, I'd like some feedback.
> :
> :http://gomerbud.com/daver/patches/dragonfly/linuxolator-compat43-removal.diff
> :
> :A couple of concerns:
> :
> : Should I next fix the other emulation layers so that they don't depend
> : on COMPAT_43? I don't have any svr4 or ibcs2 binaries to test them with.
> : Most of these changes are network related, so I'd need some network
> : capable binaries to test with.
> :
> : This patch was tested with both linux-mozillafirebird and the linux
> : rpcinfo binary. Both seem to work just fine.
> :
> : The sendmsg and recvmsg syscalls SHOULD work. I should have time to test
> : them this weekend if need be.
> :
> : The stat and lstat syscalls SHOULD work, however I have not had time to
> : build linux binaries in order to test them. Aren't these obsoleted in
> : more recent linux software by the stat64 and newstat syscalls?
> :
> : Instead of using the obsoleted socket syscalls, we use an extra copyin
> : and copyout to modify a structure in userspace possibly before and
> : possibly after the native syscall function is called. This shouldn't
> : slow things down too much. If need be, I can tweak this a bit to try
> : and speed them up.
> :
> :--
> : David P. Reese, Jr. daver at xxxxxxxxxxxx
> :
--
David P. Reese, Jr. daver at xxxxxxxxxxxx
More information about the Submit
mailing list