Age | Commit message (Collapse) | Author |
|
ok deraadt@
|
|
correct. It breaks down if we're trying to jump through a function
pointer. The protection fault trap on i386 must be one of the most
braindead traps ever invented in the history of humankind. It doesn't
give you any information about what went wrong except the instruction
that faulted. Since the problem we're trying to deal with is a
segmentation problem, we don't get the desitination that we want to
jump to, we just get the instruction and we won't add a disassembler
to trap handling just to try to figure out what went wrong.
What we want to do is to handle this as a normal fault to let noexec
accounting in pmap_enter deal with the changes to the code
segment. Unfortunately that's impossible. We don't know the faulting
address, so we need to change how the exec accounting works. Basically
the code segment must already cover the address we want to execute
before we can fault it in.
New scheme:
o Start with conservative code segment.
o If we get a protection fault, go through all mappings in the process
and find the highest executable mapping, fix up the code segment and
record that address. If the code segment didn't change, the protection
fault wasn't fixable - just die.
o If the highest executable mapping is removed, just reset the code
segment to something conservative and let the next protection fault
deal with it. We can't read all the vm mappings of the process from
the pmap because of locking hell.
This should allow floating code segment whenever someone implements that.
Also, fix the pmap_protect function to behave more like the other
pmaps we have and be slightly more agressive to force more proper
protection changes.
ok:ed by various people.
|
|
|
|
doesn't).
|
|
|
|
|
|
- do not reprogram the colormap to black and white, after programming
the rasops one (oops). This gives us back a black on white display
with colour support.
- if the screen resolution would cause the switch from the prom font to
a reasonably sized wsfont to leave text in the margins, clear the
screen (cut and paste from similar code in vigra.c)
- try and use more symbolic constants rather than magical values all over
the place.
Thanks to millert@ for bringing a sparcbook here.
|
|
Ok drahn@
|
|
|
|
|
|
|
|
|
|
iterate boot list at most once
allow kernel names with - in them
complain about option strings that do not start with -
distinguish between short read & bad read
don't quit if a file can be opened but can't be booted
|
|
|
|
|
|
unhappy.
|
|
|
|
|
|
|
|
deraadt@ ok.
|
|
fries@ niklas@ ok
|
|
fries@ niklas@ ok.
|
|
|
|
|
|
|
|
|
|
|
|
file. Remove NetBSD tag, this file is not used by NetBSD. Copyright cleanup.
|
|
|
|
crunch stuff still needs a bit of work.
|
|
|
|
|
|
|
|
|
|
|
|
per face
|
|
for hppa/osiop; krw@ ok
|
|
root on wd0a.
Problem spotted by Denis A. Doroshenko.
|
|
interleave of exe/shared libs. Raise MAXDSIZ back to 1G.
This change REQUIRES a binary update on i386.
|
|
attribute.
|
|
|
|
|
|
|
|
the fault address.
|
|
|
|
tss and not only in the frame since we might be returning that way too.
add a heuristic for detecting an exec protection fault:
iff we get a read protection fault (which we normally never
get due to our segments being always readable) we assume that
it was an exec protection indeed and go to page fault
routine which will decide the rest for us (including sending
a signal should that be needed).
problem found by drahn@ and testing by many ppl.
|
|
|
|
|
|
|
|
The AMD-K5 Model 0 gets the PGE bit in the CPU features word wrong
using the APIC bit instead, according to the AMD Processor Recognition
App. Note. Add a fixup routine to patch up cpu_feature in this case.
XXX Need a way to kick the pmap to enable pmap_pg_g -- look at how the
MP branch deals with this.
|