Age | Commit message (Collapse) | Author |
|
ok miod@
|
|
ok miod@
|
|
|
|
this differs slightly from 1.121 in that it uses the new srp_follow()
to walk the list of descriptors on an interface. this is instead
of interleaving srp_enter() and srp_leave(), which can lead to races
and corruption if you're touching the same SRPs at different IPLs
on the same CPU.
ok deraadt@ jmatthew@
|
|
hazard pointers were becoming corrupt and therefore panics.
the problem turned out to be that bridge_input calls if_input on
behalf of a hardware interface which then calls bpf_mtap at splsoftnet,
while the actual hardware nic calls if_input and bpf_mtap at splnet.
the hardware interrupts ran in the middle of the bpf calls bridge
runs at softnet. this means the same srps are being entered and
left on the same cpu at different ipls, which led to races because
of the order of operations on the per cpu hazard pointers.
after a lot of experimentation, jmatthew@ figured out how to deal
with this problem without introducing per cpu critical sections
(ie, splhigh) calls in srp_enter and srp_leave, and without introducing
atomic operations.
the solution is to iterate forward through the array of hazard
pointers in srp_enter, and backward in srp_leave to clear. if you
guarantee that you leave srps in the reverse order to entering them,
then you can use the same set of SRPs at different IPLs on the same
CPU.
the ordering requirement is a problem if we want to build linked
data structures out of srps because you need to hold a ref to the
current element containing the next srp to use it, before giving
up the current ref. we're adding srp_follow() to support taking the
next ref and giving up the current one while preserving the structure
of the hazard pointer list. srp_follow() does this by reusing the
hazard pointer for the current reference for the next ref.
both mattieu baptiste and jmatthew@ have been hitting this pretty
hard with a tweaked version of srp+bpf that uses srp_follow instead
of interleaved srp_enter/srp_leave sequences. neither can reproduce
the panics anymore.
thanks to mattieu for the report and tests
ok jmatthew@
|
|
|
|
|
|
|
|
|
|
PR_WAITOK flag to pool_init and pass NULL as the pool allocator.
ok mlarkin@
|
|
when we actually want it to.
ok deraadt@
|
|
|
|
want to do the same for fstatfs(), after we handle statfs(). These system
calls leak path information, however I am reluctant to add a seperate
catagory.
|
|
cr_uid/cr_gid (effective ids). Thus, chown(, -1,-1) should work OK, so
should chown(, me, -1), etc. With this commited, more people can test.
|
|
those bits in the request and continue. This is a better posix-subset
to give to programs.
|
|
Cleaner, clearer and less error prone.
Tested by bmercer@ as part of a larger diff, of which this is the
last part.
reads ok to jsing@ kettenis@. ok deraadt@.
|
|
sector containing the disklabel, eliminating an unnecessary " *
DL_BLKSPERSEC()".
Tested by bmercer@ as part of larger diff.
Idea from & reads ok to jsing@. ok kettenis@.
|
|
Fewer "struct rtentry" left in the wild!
|
|
Previously loopback connected routes were managed via the global list
of prefixes, which mean that systems with AUTOCONF'd addresses did not
see them in the routing table.
This also makes inet6 route creation coherent with inet.
|
|
usbd_transfer(9).
This fixes a use-after-free.
Bug found by and diff from John L. Scarfone <john AT scarfone DOT net>
|
|
Found while comparing IPv4 and IPv6 versions.
ok naddy@
|
|
Reported by jsg@, ok deraadt@
|
|
instead of using pool_allocator_nointr.
ok tedu@
|
|
ok deraadt kettenis
|
|
|
|
|
|
reporting bugs to pointing at http://www.openbsd.org/ddb.html,
because vertical space becomes more precious.
ok beck krw kettenis
|
|
ok miod@, deraadt@
|
|
to daddr_t counts and back again. And rename 'part_blkno' to
'sector' to mirror readdoslabel() changes and make code clearer.
Reads ok to jsing@ and kettenis@. Tested by bmercer@ as part of
larger diff.
|
|
PR_WAITOK flag to pmap_init and pass NULL as the pool allocator.
|
|
PR_WAITOK flag to pmap_init and pass NULL as the pool allocator.
|
|
The disklabel is either 0 bytes into a 512-byte disk sector, or 512
bytes into a larger disk sector. The address of the disk sector
read is irrelevant.
Pointed out by jsing@ I think. ok deraadt@
|
|
As a side effect there's no need to run if_attachdomain() after the
list of domains has been built.
ok claudio@, reyk@
|
|
symbols in ASM
ok deraadt@ mpi@
|
|
- Add new boot arg "bios_efi_info_t" to pass the paramters from UEFI
- Make bios(4) and acpi(4) be able to probe with the parameters from
UEFI
- Add efifb(8). It uses the framebuffer from UEFI and it will work as
a backend of wsdisplay(4) and wsfb (X11 video driver). Disabled by
the kernel config for this moment
input and ok kettenis
|
|
|
|
device-tree.
With this change, supplementary PCIe cards are now properly
detected.
This should prevents the kernel from faulting when reading
unmapped PCI addresses as reported by Donovan Watteau on ppc@.
ok kettenis@
|
|
prevent cards with no midi connectors from attaching midi(4) devices.
|
|
do about S_ISUID and SISGID... maybe we should mask them and allow
the operation to happen?
|
|
|
|
because the nfsm_strsiz() macro sneakily modifies a parameter!
ok beck
|
|
|
|
|
|
|
|
|
|
|
|
a broken USB driver could, then what happens?) 0 is the right error.
Also, keep track the size for free()
|
|
entries within a disk sector are always 0. i.e. both must start on a
sector boundary. So stop calculating the offset value and adding it to
b_data when pulling data out of the buf.
Part of larger refactoring, eyed by jsing@, tested by bmercer@ as
part of that larger diff.
|
|
architectures to communicate better what size is needed to mclgeti.
Makes ix(4) consistent with em(4).
ok mikeb@, dlg@
|
|
|