Age | Commit message (Collapse) | Author |
|
ok matthew@
|
|
attempt to
read a native label fails. Reset B_ERROR/b_error on buf to ensure any i/o failure on
that first attempt is forgiven. A la the dkcsum() fix to recover from a disk error.
|
|
that they're implemented consistently in bounds_check_with_label().
Also, per krw's request, change bounds_check_with_label() to return 0
if the checks succeed, and change the drivers to test == -1 instead of
<= 0. (Man page update to follow; intentionally omitting
arch/vax/mba/hp.c from this commit because it doesn't even build
currently and miod@ promises to kill it soon.)
ok krw@
|
|
bounds_check_with_label() and generally cleanup the code while here.
ok krw@ ("I like this a *lot*"); "i like it" tedu@
|
|
subr_disk.c. For now just the MI disk drivers.
ok deraadt@, krw@; jsing@ liked the approach too
|
|
ok deraadt@
|
|
interrupted by signals.
ok deraadt@
|
|
ok deraadt@
|
|
never done anything in OpenBSD and just clutters disk drivers with
silly flag handling.
More cleanup to follow.
ok deraadt@, millert@; no objections krw@
|
|
issue in disk_attach_callback. Assumes that the struct disk is part
of the driver's softc, but this is always true in practice.
Still other scary use-after-free races lying around here though...
ok jsing@, deraadt@
|
|
|
|
ok deraadt@ marco@ krw@
|
|
what the previous IO was. Less chance of copy and paste errors.
Suggested by miod@.
|
|
are past. Use CLR() and SET() to modify necessary flags while leaving
the flags used by the buffer cache in peace.
Should make bufcache code much less confused about the state of the
bufs used in reading/writing disklabels. Other such flag abuses no
doubt await a visit.
Errors in original diff found by miod@.
ok beck@ deraadt@
|
|
Spotted by deraadt@.
|
|
sushi level.
|
|
EBRs to follow looking for the OpenBSD partition. Just stop spoofing
if necessary.
|
|
the disklabel UID may have changed.
ok krw@ deraadt@
|
|
ok krw@ deraadt@
|
|
In disk_readlabel() if the ioctl fails don't forget to close the disk.
Avoid sharing a static error buffer between a workq and mountroot since
they can compete. Pass the dev_t to the workq inside one of the arguments
without a malloc'd object.
ok miod dlg krw
|
|
curproc. A bunch of callers were passing in 0 (not even NULL, 0) as this
pointer, which was fine until the called vnode function tried to do
something with it. Typically, this code was then copy/pasted to various
parts of the tree.
Accept the facts of life and switch all of these over to passing curproc
for now until the argument can be removed.
Discovered by stsp trying to create a softraid on top of a vnd, which
crashed with a NULL deref in vndioctl.
softraid bits tested by mikeb and jsing. raidframe bits tested by pea,
matthieu and naddy. The rest tested by at least thib, jsing and myself.
ok thib@, jsing@.
|
|
providing the DKF_NOLABELREAD flag is not set. This provides the kernel
with the actual disklabel which includes the disklabel UID.
ok deraadt@ miod@ krw@
|
|
verifying that the resulting device is present on the disklist. This
avoids a race whereby the disk driver can be accessed as soon as the
softc has been allocated, but before the disk has completed
initialisation and has called disk_attach() (up until this point
dk_label is still a null pointer).
Cut cd(4), sd(4) and wd(4) across to disk_lookup(). All callers of
disk_attach() need to be tested and cut over in due course.
ok deraadt@ krw@
|
|
disk_attach() is called by the device driver. We will be building on
this shortly.
ok deraadt@ krw@
|
|
root off), return NULL instead.
|
|
here also expose disklist for future use.
ok deraadt@ miod@
|
|
ok jsing@
|
|
ok deraadt@
|
|
actual device. If successful, the real path is returned via mappath. Soon
to be used by several other diffs.
ok krw@
|
|
already have one.
ok krw@
|
|
to pad-align the size of the structure; it grows, the disklabel ioctl's are
break ABI. Change the uid to a character array. this also simplifies some
other stuff
ok jsing
|
|
identifier, allowing the disk to be identified without relying on the
device name.
ok deraadt@ krw@ beck@ marco@ todd@
|
|
from Brad Tilley <brad at 16systems dot com>;
ok oga@
|
|
invalid offsets and sizes: reject the i/o.
ok deraadt@ beck@
|
|
errnos. Note that the error strings are being ignored, since we long ago
decided to not spam the console, and there is no other nice way to use the
errors (without changing the ioctls to pass it back)
The errno is now useful, since we can pass b_error from failing IO up, and
the drive can decide how to use that
ok miod
|
|
things to softraid.
ok jsing thib krw beck oga
|
|
have been going on. this appears to bring us back to stable state.
lots of testing by oga and ariane and my self.
|
|
indicates that writedisklabel is trying to find the location for writing
the label. If the lp is messed with, an invalid checksum is written.
done with miod and kettenis, lots of moaning and gnashing of teeth, etc
|
|
still do the right thing if the MBR has a lie in it
|
|
bounds information, ie. the zone of the disk that OpenBSD can use. Have each
pre-disklabel parser (MBR, DPME, or per-arch MD disklabel parsers) figure out
this area and pass it up to userland. Then, delete all the same disk parsing
code from disklabel(8) since the kernel passes it up. Lots and lots of - signs
in the disklabel(8) code.
Tested on as many platforms as possible, the fallout will be repaired as time
goes on. To test, use disklabel -d <drive> and validate that the bounds do not
overlap any boot blocks. This same information is used by disklabel -A...
OK for the concept from krw, miod, and drahn
|
|
one by tedu@. It doesn't do anything smart yet, it just uses
plain old disksort. we also keep the old method of queueing bufs
since some miods have crazy MD drivers that need some love.
ok beck@, art@
tested by many on many archs.
|
|
be murdered and theo will visit with a 2x4.
ok deraadt
|
|
ok oga@
'dance for me' blambert@
|
|
not read garbage values as partitions... which we then put into the spoofed
label... and which would lead disklabel -A to make surprising decisions.
earlier versions which did too much validation tested by many
|
|
|
|
should not stop the spoofing process. Setting 'wander' means when
we are done with this MBR, read the next one.
Problem noted and fix tested by Nick Guenther.
ok weingart@ (I think), deraadt@
|
|
on the disk lock we can find that code rather than wondering where "sd0"
gets passed to tsleep.
ok deraadt@
|
|
on; prompted by Thorsten Glaser; ok miod@ krw@
|
|
three-byte jmp will be acceptable as the preamble to a FAT boot
sector for the purposes of spoofing an 'i' partition. Problem noted
most recently by mbalmer@.
Fixes mbalmer@, fkr@ and jmc@'s Nokia E71 phones.
"seems silly" tedu@ "disgusting" deraadt@ "makes sense" fkr@
ok jmc@ "looks ok" weingart@
|
|
correct address to write the passed label. Don't spoof partitions
while looking for the address, as this could result in an invalid
label being written out.
"That looks right" deraadt@ "Looks good to me" miod@
|