HomeFreeBSD

Prevent some kobj memory allocation failures from panicking the system.

Description

Prevent some kobj memory allocation failures from panicking the system.

Parts of the kobj(9) KPI assume a non-sleepable context for the purpose
of internal memory allocations, but currently have no way to signal an
allocation failure to the caller, so they just panic in this case. This
can occur even when kobj_create() is called with M_WAITOK. Fix some
instances of the problem by plumbing wait flags from kobj_create() through
internal subroutines. Change kobj_class_compile() to assume a sleepable
context when called externally, since all existing callers use it in a
sleepable context.

To fix the problem fully the kobj_init() KPI must be changed.

Reported and tested by: pho
Reviewed by: kib (previous version)
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D19023

Details

Provenance
markjAuthored on
Reviewer
kib
Differential Revision
D19023: Reduce the scope of possible allocation failures in subr_kobj.c.
Parents
rS343625: Release Sean Eric Fagan (sef) from mentorship.
Branches
Unknown
Tags
Unknown