imp [Mon, 28 May 2001 02:53:02 +0000 (02:53 +0000)]
Turns out that one bit isn't enough. Introduce two new fields
csc_route and func_route to hold the way that each interrupt is
routed. csc is Card Status Change in the datasheets and standard, but
is called "Management Interrupt" in FreeBSDese. There are three types
of interrupt routing: ISA parallel, PCI parallel and ISA serial (some
chipsets support other types as well, but I don't plan on supporting
them).
When we try to allocate an interrupt, and the type for that interrupt
is pci_parallel, allow it to be shared by oring in RF_SHAREABLE to the
flags argument. Introduce pcic_alloc_resource to allow this to
happen.
jesper [Sun, 27 May 2001 23:26:11 +0000 (23:26 +0000)]
In sys/boot/common/module.c, near line 105 a request for a raw
file is processed by passing its name in argv[1]:
return(mod_loadobj(typestr, argv[1]));
however, it is not tested to see if argv[1] actually is defined.
At best, mod_loadobj() near line 244 returns an error like
"can't find 'garbage'" but if the "filename" entered is sufficiently
long, some buffer gets overrun. Of course, "load -t filename" is
actually a typo because we meant to type "load -t mfs_root filename";
nevertheless, a hung machine seems like too harsh a punishment for
such a small typo...
yar [Sun, 27 May 2001 22:50:22 +0000 (22:50 +0000)]
Don't confuse the admin with spurious error messages
about non-existent mount directories (which would come
into existence after the real mount has occured) when just
testing for if there are any NFS filesystems in /etc/fstab.
gallatin [Sun, 27 May 2001 22:22:03 +0000 (22:22 +0000)]
finally fix intr routing on alphas such as the as500 after months of
breakage:
- call PCIB_ROUTE_INTERRUPT() regardless of how valid the intline looks.
Some alphas leave garbage in the intline and leave the intr mapping
to OS platform support routines that map slots/buses to intlines
- Down in the alpha pci code, first try platform.pci_intr_route() and
if it doesn't exist or returns garbage, just read the intline out of
config space.
tested on AS500 (garbage in intline) and UP1000 (PC-like, intline is valid)
Note that a nice little hack like the APIC_IO section of pci_cfgregread()
is not workable. This is because the calling interface for
alpha_pci_route_interrupt() requires us to figure out the bus/slot/etc
from a device_t. At pci_read_device() time, we don't have a device_t
for the bus/slot/func in question.
dd [Sun, 27 May 2001 21:08:19 +0000 (21:08 +0000)]
Miscellaneous cleanups; sync to OpenBSD as much as feasible.
Noteworthy changes include:
* Use getopt(3).
* Fix overflows in -b and -w options.
* Use strlcpy(3) and snprintf(3) in favor of strcpy(3) and
sprintf(3), respectively. Also check return values of the former
two.
* Fix lots of other gratuitous differences with OpenBSD.
mikeh [Sun, 27 May 2001 20:26:22 +0000 (20:26 +0000)]
Cleanup mail(1)'s varying styles by converting to using style(9).
Also take a stab at cleaning up BDECFLAGS and convert all uses of
NOSTR, NIL, NONE, NOVAR, NOGRP, NOGE to NULL. Also kill 'register' to
get diffs somewhat closer to OpenBSD/NetBSD.
There are no functional changes however.
Reviewed by: nra (visual inspection)
cg [Sun, 27 May 2001 17:22:00 +0000 (17:22 +0000)]
beginnings of virtual playback channel support
instead of using two malloced arrays for storing channel lists, use an
slist. convert the sndstat device to use sbufs and optionally provide more
detail about channel state.
vchans are software mixed playback channels. they are not enabled by this
commit. they use the feeder infrastructure to emulate normal playback
channels in a manner transparent to applications, whilst providing as many
channels are desired, especially suitable for devices with only one hardware
playback channel. in the future they will provide additional features.
those wishing to test this functionality will need to add vchan.c to
sys/conf/files and use 'sysctl -w hw.snd.pcm0.vchans' to enable it.
blocksize and auto-rate selection are not yet supported.
hm [Sun, 27 May 2001 08:05:57 +0000 (08:05 +0000)]
update the sample isdnd.rc file with a firmware keyword example and a real
world example of the use of the valid keyword in conjunction with budget
handling.
dd [Sun, 27 May 2001 06:28:08 +0000 (06:28 +0000)]
Instead of defining CONS_CLRHIST if it isn't defined, simply disable
the -c option [when CONS_CLRHIST isn't defined]. This is okay since
the only time CONS_CLRHIST wouldn't be defined is when kbdcontrol is
being built in bootstrap-tools, and -c isn't needed then.
ken [Sun, 27 May 2001 03:22:51 +0000 (03:22 +0000)]
Print out the asc/ascq and description even when both the asc and ascq
are zero. This is so that users will see the "no addtional sense" printout
and know that they have the full sense information.
dd [Sun, 27 May 2001 00:57:25 +0000 (00:57 +0000)]
In the VIRTUAL_TTY macro, add a check to make sure that the result of
SC_DEV isn't NULL; if it is, evaluate to NULL and don't dereference
NULL. Callers of VIRTUAL_TTY must already check for the result being
NULL since si_tty can be NULL, so this should be safe.
This fixes a panic when trying to switch to a different vty in an
environment such as userconfig (-c option to the kernel).
rwatson [Sat, 26 May 2001 19:59:44 +0000 (19:59 +0000)]
o pcred-removal changes included modifications to optimize the setting of
the saved uid and gid during execve(). Unfortunately, the optimizations
were incorrect in the case where the credential was updated, skipping
the setting of the saved uid and gid when new credentials were generated.
This change corrects that problem by handling the newcred!=NULL case
correctly.
Reported/tested by: David Malone <dwmalone@maths.tcd.ie>
markm [Sat, 26 May 2001 17:40:09 +0000 (17:40 +0000)]
From the submitter:
$ PERL_DL_NONLAZY=1 perl -MPOSIX -e ''
Can't load '/usr/libdata/perl/5.6.0/mach/auto/POSIX/POSIX.so' for module
POSIX: /usr/libdata/perl/5.6.0/mach/auto/POSIX/POSIX.so: Undefined
symbol "sv_setptrobj" at /usr/libdata/perl/5.6.0/XSLoader.pm line 73.
at /usr/libdata/perl/5.6.0/mach/POSIX.pm line 24
Compilation failed in require.
BEGIN failed--compilation aborted.
This problem only exists in -CURRENT. Most often it is reproduced when
compiling some perl extension manually. Make test uses PERL_DL_NONLAZY,
and if a tested module uses POSIX, boom!
Luckily, we don't see it very often, mostly because the vast majority of
p5 ports do not perform the `make test' step.
Submitted by: Anton Berezin <tobez@tobez.org>
Needs to be a committer already: Anton Berezin <tobez@tobez.org>
dwmalone [Sat, 26 May 2001 14:40:39 +0000 (14:40 +0000)]
Make dg_echo return up to the first 65536 bytes of a datagram.
The patch I used isn't quite the one Lars suggested, but the size
of the largest datagram you can recv isn't #defined anywhere, and
probably isn't even bounded for some protocols.
PR: 25050
Submitted by: Lars Eggert <larse@isi.edu>
markm [Sat, 26 May 2001 09:52:36 +0000 (09:52 +0000)]
Deconvolute the authentication mess, and hand total responsiblity
for authentication to PAM. This meens that WHEELSU-type logic can
now be effected in the pam.conf "su" configuration stack. While here,
clean up the mess that the code had assumed over years of hacking by
folks using different styles. ANSIfy.
There is more policy in here that can be handed over to PAM. This will
be revisited.
phk [Sat, 26 May 2001 09:27:08 +0000 (09:27 +0000)]
Currently, each wireless networking driver has it's own control program
despite the fact that most people want to set exactly the same settings
regardless of which card they have. It has been repeatidly suggested
that this configuration should be done via ifconfig. This patch
implements the required functionality in ifconfig and add support to the
wi and an drivers. It also provides partial, untested support for the
awi driver.
PR: 25577
Submitted by: Brooks Davis <brooks@one-eyed-alien.net>
obrien [Fri, 25 May 2001 20:51:22 +0000 (20:51 +0000)]
The standard Xterm geometry is 80x24, not 80x_65_.
In the past 2 months or so, after rlogining into another host, the
environment has the geometry wrong. Peter suggested that this behavior
change was most likely caused by the PAM stuff that changed to run a proper
session with a forked child. And that for some reason the window size is
no longer being transferred via an OOB message on the socket.
This change fixes my problem and seems to be a good stopgap measure until
someone has time to ktrace/ktrace -i inetd to catch all the child processes
it spawns while doing an rlogin and change window size a few times to see
how far the change messages are getting.
imp [Fri, 25 May 2001 18:28:49 +0000 (18:28 +0000)]
Migrate from unit based to dev base. Don't save unit number, but do save
dev. Convert all uses of unit to dev as appropriate. Minor comment fixes
to pcic_softc definition.
tmm [Fri, 25 May 2001 18:24:52 +0000 (18:24 +0000)]
Add a check to determine whether extended attributes have been
initialized on the file system before trying to grab the lock of the
per-mount extattr structure, as this lock is unitialized in that case.
This is needed because ufs_extattr_vnode_inactive is called from
ufs_inactive, which is also used by EA-unaware file systems such as
ext2fs.
bmah [Fri, 25 May 2001 18:01:34 +0000 (18:01 +0000)]
RELNOTESng is now the default for -CURRENT release builds. (Floppy
images get TXT renderings only; CDROM and FTP areas get TXT and HTML.)
Remove the old *.TXT release documentation files, as they
have been subsumed into RELNOTESng. The new layout will greatly
facilitate their maintenence and help keep them internally consistent.
bmah [Fri, 25 May 2001 17:08:22 +0000 (17:08 +0000)]
New release notes: O_DIRECT flag for open(2) and fcntl(2), RFC 1323
enabled by default for TCP, ipfw(8) -d, Makefile WARNS, boot-time
enable of background_fsck, ping(8) -A, vidcontrol(1) -p, telnet(1) -u,
default vinum(8) stripe size change to 279KB, OpenSSH 0.9.6.
rwatson [Fri, 25 May 2001 16:59:11 +0000 (16:59 +0000)]
o Merge contents of struct pcred into struct ucred. Specifically, add the
real uid, saved uid, real gid, and saved gid to ucred, as well as the
pcred->pc_uidinfo, which was associated with the real uid, only rename
it to cr_ruidinfo so as not to conflict with cr_uidinfo, which
corresponds to the effective uid.
o Remove p_cred from struct proc; add p_ucred to struct proc, replacing
original macro that pointed.
p->p_ucred to p->p_cred->pc_ucred.
o Universally update code so that it makes use of ucred instead of pcred,
p->p_ucred instead of p->p_pcred, cr_ruidinfo instead of p_uidinfo,
cr_{r,sv}{u,g}id instead of p_*, etc.
o Remove pcred0 and its initialization from init_main.c; initialize
cr_ruidinfo there.
o Restruction many credential modification chunks to always crdup while
we figure out locking and optimizations; generally speaking, this
means moving to a structure like this:
newcred = crdup(oldcred);
...
p->p_ucred = newcred;
crfree(oldcred);
It's not race-free, but better than nothing. There are also races
in sys_process.c, all inter-process authorization, fork, exec, and
exit.
o Remove sigio->sio_ruid since sigio->sio_ucred now contains the ruid;
remove comments indicating that the old arrangement was a problem.
o Restructure exec1() a little to use newcred/oldcred arrangement, and
use improved uid management primitives.
o Clean up exit1() so as to do less work in credential cleanup due to
pcred removal.
o Clean up fork1() so as to do less work in credential cleanup and
allocation.
o Clean up ktrcanset() to take into account changes, and move to using
suser_xxx() instead of performing a direct uid==0 comparision.
o Improve commenting in various kern_prot.c credential modification
calls to better document current behavior. In a couple of places,
current behavior is a little questionable and we need to check
POSIX.1 to make sure it's "right". More commenting work still
remains to be done.
o Update credential management calls, such as crfree(), to take into
account new ruidinfo reference.
o Modify or add the following uid and gid helper routines:
change_euid()
change_egid()
change_ruid()
change_rgid()
change_svuid()
change_svgid()
In each case, the call now acts on a credential not a process, and as
such no longer requires more complicated process locking/etc. They
now assume the caller will do any necessary allocation of an
exclusive credential reference. Each is commented to document its
reference requirements.
o CANSIGIO() is simplified to require only credentials, not processes
and pcreds.
o Remove lots of (p_pcred==NULL) checks.
o Add an XXX to authorization code in nfs_lock.c, since it's
questionable, and needs to be considered carefully.
o Simplify posix4 authorization code to require only credentials, not
processes and pcreds. Note that this authorization, as well as
CANSIGIO(), needs to be updated to use the p_cansignal() and
p_cansched() centralized authorization routines, as they currently
do not take into account some desirable restrictions that are handled
by the centralized routines, as well as being inconsistent with other
similar authorization instances.
o Update libkvm to take these changes into account.
hm [Fri, 25 May 2001 13:25:59 +0000 (13:25 +0000)]
Add the contributed directory from the i4b tarball and the files from it
which would be nice to have.
Move isdnd_acct and isdnctl to the contrib directory where they belong to.
alex [Fri, 25 May 2001 12:27:00 +0000 (12:27 +0000)]
This script can control the state of your ISDN line. It counts
how many scripts/users currently use the ISDN line and uses
"ifconfig down" if noone uses it any more.