| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
revision 1.101
date: 2005/09/18 19:23:35; author: cognet; state: Exp; lines: +14 -5
Slightly change the API for the SNPSTTY ioctl so that the userland now
provides a file descriptor instead of a dev_t.
revision 1.102
date: 2005/09/19 13:48:45; author: ru; state: Exp; lines: +5 -5
Restore the ability to detach from a tty via SIOCSTTY and document
recent changes in a manpage.
Approved by: re
Notes:
svn path=/stable/6/; revision=150494
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
HEAD to RELENG_6: changes to introduce a credentialed version of the
clone event handler, and then changes to merge the regular and
credentialed versions into a single interface (along with updates to
existing consumers). With this merge, 6.x and 7.x are in sync.
First batch merges devfs_devs.c:1.37, devfs_vnops.c:1.115,
kern_conf.c:1.187, tty_pty.c:1.138, mac_vfs.c:1.109, mac_biba.c:1.36,
mac_lomac.c:1.36, mac_mls.c:1.73, mac_stub.c:1.53, mac_test.c:1.61,
conf.h:1.223, mac.h:1.68, mac_policy.h:1.67 from HEAD to RELENG_6:
When devfs cloning takes place, provide access to the credential of the
process that caused the clone event to take place for the device driver
creating the device. This allows cloned device drivers to adapt the
device node based on security aspects of the process, such as the uid,
gid, and MAC label.
- Add a cred reference to struct cdev, so that when a device node is
instantiated as a vnode, the cloning credential can be exposed to
MAC.
- Add make_dev_cred(), a version of make_dev() that additionally
accepts the credential to stick in the struct cdev. Implement it and
make_dev() in terms of a back-end make_dev_credv().
- Add a new event handler, dev_clone_cred, which can be registered to
receive the credential instead of dev_clone, if desired.
- Modify the MAC entry point mac_create_devfs_device() to accept an
optional credential pointer (may be NULL), so that MAC policies can
inspect and act on the label or other elements of the credential
when initializing the skeleton device protections.
- Modify tty_pty.c to register clone_dev_cred and invoke make_dev_cred(),
so that the pty clone credential is exposed to the MAC Framework.
While currently primarily focussed on MAC policies, this change is also
a prerequisite for changes to allow ptys to be instantiated with the UID
of the process looking up the pty. This requires further changes to the
pty driver -- in particular, to immediately recycle pty nodes on last
close so that the credential-related state can be recreated on next
lookup.
Submitted by: Andrew Reisse <andrew.reisse@sparta.com>
Obtained from: TrustedBSD Project
Sponsored by: SPAWAR, SPARTA
Second batch merges scsi_target.c:1.68, coda_fbsd.c:1.43,
firewirereg.h:1.38, fwdev.c:1.47, nmdm.c:1.36, snp.c:1.100, dsp.c:1.82,
mixer.c:1.45, vkbd.c:1.9, devfs_vnops.c:1.117, tty_pty.c:1.139,
tty_tty.c:1.57, bpf.c:1.156, if_tap.c:1.56, if_tun.c:1.153,
smb_dev.c:1.28, conf.h:1.224 from HEAD to RELENG_6:
Merge the dev_clone and dev_clone_cred event handlers into a single
event handler, dev_clone, which accepts a credential argument.
Implementors of the event can ignore it if they're not interested,
and most do. This avoids having multiple event handler types and
fall-back/precedence logic in devfs.
This changes the kernel API for /dev cloning, and may affect third
party packages containg cloning kernel modules.
Requested by: phk
These changes modifies the kernel device driver API for device cloning,
and might require minor modifications to third party device drivers that
make use of devfs cloning. It will not be merged to RELENG_5.
Approved by: re (scottl)
Notes:
svn path=/stable/6/; revision=149038
|
| |
|
|
|
|
|
|
| |
closes the race where the cdev was reclaimed before it ever made it
back to devfs lookup.
Notes:
svn path=/head/; revision=144389
|
| |
|
|
|
|
|
|
| |
need to be fixed. In both cases the API should be reengineered to do
something (more) sensible.
Notes:
svn path=/head/; revision=143637
|
| |
|
|
| |
Notes:
svn path=/head/; revision=139749
|
| |
|
|
|
|
|
|
| |
Include uio.h instead of relying on vnode.h to do so.
Check O_NONBLOCK not IO_NDELAY.
Notes:
svn path=/head/; revision=139195
|
| |
|
|
|
|
|
|
| |
snp attached to a tty.
This fixes the panic that happens when using snp.
Notes:
svn path=/head/; revision=137265
|
| |
|
|
| |
Notes:
svn path=/head/; revision=135724
|
| |
|
|
|
|
|
|
|
|
|
|
| |
future:
rename ttyopen() -> tty_open() and ttyclose() -> tty_close().
We need the ttyopen() and ttyclose() for the new generic cdevsw
functions for tty devices in order to have consistent naming.
Notes:
svn path=/head/; revision=132226
|
| |
|
|
|
|
|
|
|
|
|
| |
for unknown events.
A number of modules return EINVAL in this instance, and I have left
those alone for now and instead taught MOD_QUIESCE to accept this
as "didn't do anything".
Notes:
svn path=/head/; revision=132199
|
| |
|
|
| |
Notes:
svn path=/head/; revision=132133
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The big lines are:
NODEV -> NULL
NOUDEV -> NODEV
udev_t -> dev_t
udev2dev() -> findcdev()
Various minor adjustments including handling of userland access to kernel
space struct cdev etc.
Notes:
svn path=/head/; revision=130640
|
| |
|
|
|
|
|
| |
Bump __FreeBSD_version accordingly.
Notes:
svn path=/head/; revision=130585
|
| |
|
|
| |
Notes:
svn path=/head/; revision=129879
|
| |
|
|
|
|
|
| |
Requested by: rwatson
Notes:
svn path=/head/; revision=126845
|
| |
|
|
| |
Notes:
svn path=/head/; revision=126188
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the unused second argument from udev2dev().
Convert all remaining users of makedev() to use udev2dev(). The
semantic difference is that udev2dev() will only locate a pre-existing
dev_t, it will not line makedev() create a new one.
Apart from the tiny well controlled windown in D_PSEUDO drivers,
there should no longer be any "anonymous" dev_t's in the system
now, only dev_t's created with make_dev() and make_dev_alias()
Notes:
svn path=/head/; revision=126081
|
| |
|
|
|
|
|
|
|
|
|
| |
Introduce d_version field in struct cdevsw, this must always be
initialized to D_VERSION.
Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing
four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.
Notes:
svn path=/head/; revision=126080
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit adds a couple of functions for pseudodrivers to use for
implementing cloning in a manner we will be able to lock down (shortly).
Basically what happens is that pseudo drivers get a way to ask for
"give me the dev_t with this unit number" or alternatively "give
me a dev_t with the lowest guaranteed free unit number" (there is
unfortunately a lot of non-POLA in the exact numeric value of this
number, just live with it for now)
Managing the unit number space this way removes the need to use
rman(9) to do so in the drivers this greatly simplifies the code in
the drivers because even using rman(9) they still needed to manage
their dev_t's anyway.
I have taken the if_tun, if_tap, snp and nmdm drivers through the
mill, partly because they (ab)used makedev(), but mostly because
together they represent three different problems for device-cloning:
if_tun and snp is the plain case: just give me a device.
if_tap has two kinds of devices, with a flag for device type.
nmdm has paired devices (ala pty) can you can clone either of them.
Notes:
svn path=/head/; revision=126077
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
thread being waken up. The thread waken up can run at a priority as
high as after tsleep().
- Replace selwakeup()s with selwakeuppri()s and pass appropriate
priorities.
- Add cv_broadcastpri() which raises the priority of the broadcast
threads. Used by selwakeuppri() if collision occurs.
Not objected in: -arch, -current
Notes:
svn path=/head/; revision=122352
|
| |
|
|
|
|
|
| |
Also some minor style cleanups.
Notes:
svn path=/head/; revision=119419
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
branches:
Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.
This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.
Approved by: re(scottl)
Notes:
svn path=/head/; revision=111815
|
| |
|
|
| |
Notes:
svn path=/head/; revision=111748
|
| |
|
|
| |
Notes:
svn path=/head/; revision=111571
|
| |
|
|
|
|
|
| |
Approved by: trb
Notes:
svn path=/head/; revision=111119
|
| |
|
|
|
|
|
| |
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
Notes:
svn path=/head/; revision=109623
|
| |
|
|
|
|
|
|
|
|
| |
really do and dev_t is defined differently in kernel and userland.
Return a correctly formed udev from SNPGTTY.
Reviewed by: dd
Notes:
svn path=/head/; revision=106767
|
| |
|
|
|
|
|
|
|
|
|
| |
submitter, this permits Russian (and probably other locales') characters
to be entered via watch(8).
PR: 35636
Submitted by: Gleb Smirnoff <glebius@rinet.ru>
Notes:
svn path=/head/; revision=94341
|
| |
|
|
| |
Notes:
svn path=/head/; revision=92739
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
selwakeup required calling pfind which would cause lock order
reversals with the allproc_lock and the per-process filedesc lock.
Solution:
Instead of recording the pid of the select()'ing process into the
selinfo structure, actually record a pointer to the thread. To
avoid dereferencing a bad address all the selinfo structures that
are in use by a thread are kept in a list hung off the thread
(protected by sellock). When a selwakeup occurs the selinfo is
removed from that threads list, it is also removed on the way out
of select or poll where the thread will traverse its list removing
all the selinfos from its own list.
Problem:
Previously the PROC_LOCK was used to provide the mutual exclusion
needed to ensure proper locking, this couldn't work because there
was a single condvar used for select and poll and condvars can
only be used with a single mutex.
Solution:
Introduce a global mutex 'sellock' which is used to provide mutual
exclusion when recording events to wait on as well as performing
notification when an event occurs.
Interesting note:
schedlock is required to manipulate the per-thread TDF_SELECT
flag, however if given its own field it would not need schedlock,
also because TDF_SELECT is only manipulated under sellock one
doesn't actually use schedlock for syncronization, only to protect
against corruption.
Proc locks are no longer used in select/poll.
Portions contributed by: davidc
Notes:
svn path=/head/; revision=92252
|
| |
|
|
| |
Notes:
svn path=/head/; revision=92056
|
| |
|
|
|
|
|
|
|
|
|
| |
important, since our sleep is interruptable (PCATCH flag).
PR: 30985
Discovered by: Vladimir Jakovenko <vovik@lucky.net>
Submitted by: Valentin Nechayev <netch@segfault.kiev.ua>
Notes:
svn path=/head/; revision=86861
|
| |
|
|
|
|
|
|
|
|
|
| |
snooped on. This causes all kinds of Bad Things(tm) to happen since
closing one session will clobber state that's needed for the other
one. This could theoretically be supported if the code was careful,
but until somebody implements that, preventing this will stop people
from unknowingly shooting themselves in the foot.
Notes:
svn path=/head/; revision=86855
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
device cloned, and assign all further devices to depend on it. This
allows us to call dev_depends() on it at module unload time to get rid
of /dev/snp* (in the devfs case, anyway). For this to work, we must
not destroy the device at close time. [Idea stolen from if_tun.]
The above has the following sideaffects: (a) The snp device used by
watch(8) will remain after watch(8) exits. This is probably how it
should have been all along, and how it was before devfs came along.
(b) Module unload doesn't panic if there are any /dev/snp* devices
which haven't been used (and thus previously destroyed). Thus, we can
reenable the unload functionality disabled in rev. 1.65.
PR: 32012
Notes:
svn path=/head/; revision=86853
|
| |
|
|
|
|
|
| |
results of suser_td().
Notes:
svn path=/head/; revision=86419
|
| |
|
|
|
|
|
| |
panics)
Notes:
svn path=/head/; revision=86417
|
| |
|
|
|
|
|
|
|
| |
to prevent inappropriate use of the snoop device. This means that,
with appropriate chmod'ing, arbitrary users may make use of the snoop
device.
Notes:
svn path=/head/; revision=86413
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.
Sorry john! (your next MFC will be a doosie!)
Reviewed by: peter@freebsd.org, dillon@freebsd.org
X-MFC after: ha ha ha ha
Notes:
svn path=/head/; revision=83366
|
| |
|
|
|
|
|
|
|
|
|
| |
probably harmless in this case, since the latter is called on tty
input, which is usually a result of some system call, so we've got
plenty of stack left. It's still nice to fix these things, though, in
case somebody ever decides this driver is a good example of something
(perhaps "what you probably shouldn't do").
Notes:
svn path=/head/; revision=81747
|
| |
|
|
|
|
|
|
| |
of the snp* functions needed to be called from tty.c, which is no
longer the case.
Notes:
svn path=/head/; revision=80326
|
| |
|
|
|
|
|
| |
EBUSY if there's a device still open.
Notes:
svn path=/head/; revision=79864
|
| |
|
|
|
|
|
|
| |
I accidently nuked in rev. 1.54. Also rework the error handling in
snplwrite a little.
Notes:
svn path=/head/; revision=77749
|
| |
|
|
|
|
|
|
|
|
|
|
| |
compliant. All the variable definitions and function names are
reasonably consistent, and the functions which should be static (i.e.,
all of them) are. Other assorted fixes were made. The majority of
the delta is indentation fixes.
Partially reviewed by: bde
Notes:
svn path=/head/; revision=77748
|
| |
|
|
| |
Notes:
svn path=/head/; revision=77736
|
| |
|
|
|
|
|
|
|
|
| |
home-grown macro, rewrite a confusing conditional in snpdevtotty(),
and change ibuf to 512 bytes instead of 1024 bytes in dsnwrite().
Reviewed by: bde
Notes:
svn path=/head/; revision=77648
|
| |
|
|
|
|
|
|
|
|
| |
needs instead of relying on idiosyncratic hacks in the tty subsystem.
Also add module code since this can now be compiled as a module.
Silence by: -hackers, -audit
Notes:
svn path=/head/; revision=77016
|
| |
|
|
|
|
|
| |
Reviewed by: brian
Notes:
svn path=/head/; revision=75633
|
| |
|
|
|
|
|
| |
the bit-bucket.
Notes:
svn path=/head/; revision=74810
|
| |
|
|
| |
Notes:
svn path=/head/; revision=71789
|
| |
|
|
|
|
|
|
| |
Submitted by: josh@zipperup.org
Submitted by: Robert Drehmel <robd@gmx.net>
Notes:
svn path=/head/; revision=69781
|