Request for review: uname(), setdomainname(), getdomainname() cleanups

From: Ed Schouten <ed_at_80386.nl>
Date: Fri, 7 Nov 2008 12:12:01 +0100
Hello all,

I just wrote this patch and I thought I'd better send it to the lists,
because it affects a lot of random things (Linux emulation, priv(9)
flags, etc).

Looking at kern_xxx.c, I see we've got a couple of functions there that
actually have to be #ifdef'd with COMPAT_*, while they aren't. Looking
at our CVS repository I can already confirm we don't need to implement
uname(), setdomainname() and getdomainname() on RELENG_5 and later, so I
put them in COMPAT_FREEBSD4. They are implemented as library routines
nowdays. I think they could even be marked as COMPAT_43, but just to be
sure I picked COMPAT_FREEBSD4.

Below is a list of things of interest:

- I noticed we have a PRIV_SETDOMAINNAME, but we don't use it inside
  sysctl_domainname(). This means that you can bypass PRIV_SETDOMAINNAME
  anyway, so remove it.

- I think it's better if we just implement getdomainname() and
  setdomainname() by calling userland_sysctl(). This makes it less
  likely to break if we would ever change sysctl_domainname() in
  kern_mib.c.

- To make the linuxolator compile without enabling COMPAT_FREEBSD4, I
  added a linux_setdomainname(). I also noticed linux_sethostname()
  called userland_sysctl() without holding Giant.

- It wasn't easy to make uname(), setdomainname() and getdomainname()
  work in COMPAT_FREEBSD32, because we would actually need a
  "COMPAT4+NOPROTO" option for syscalls.master. Because these system
  calls aren't likely to be used, I just disabled them. If it turns out
  we really need them, we could reintroduce them.

Any comments? If not, I'll commit it to SVN in a day or two. Thanks!

-- 
 Ed Schouten <ed_at_80386.nl>
 WWW: http://80386.nl/

Received on Fri Nov 07 2008 - 10:12:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:37 UTC