Page MenuHomeFreeBSD

D22571.id64943.diff
No OneTemporary

D22571.id64943.diff

Index: sys/kern/kern_linker.c
===================================================================
--- sys/kern/kern_linker.c
+++ sys/kern/kern_linker.c
@@ -2069,23 +2069,28 @@
{
linker_file_t lfdep;
const char *filename;
+ struct proc *p;
char *pathname;
int error;
sx_assert(&kld_sx, SA_XLOCKED);
+
+ p = curproc;
if (modname == NULL) {
/*
* We have to load KLD
*/
KASSERT(verinfo == NULL, ("linker_load_module: verinfo"
" is not NULL"));
- if (rootvnode == NULL)
+ /* check if root file system is not mounted */
+ if (rootvnode == NULL || p->p_fd->fd_rdir == NULL)
return (ENXIO);
pathname = linker_search_kld(kldname);
} else {
if (modlist_lookup2(modname, verinfo) != NULL)
return (EEXIST);
- if (rootvnode == NULL)
+ /* check if root file system is not mounted */
+ if (rootvnode == NULL || p->p_fd->fd_rdir == NULL)
return (ENXIO);
if (kldname != NULL)
pathname = strdup(kldname, M_LINKER);
Index: sys/kern/subr_firmware.c
===================================================================
--- sys/kern/subr_firmware.c
+++ sys/kern/subr_firmware.c
@@ -257,7 +257,6 @@
static void
loadimage(void *arg, int npending)
{
- struct thread *td = curthread;
char *imagename = arg;
struct priv_fw *fp;
linker_file_t result;
@@ -267,11 +266,6 @@
mtx_lock(&firmware_mtx);
mtx_unlock(&firmware_mtx);
- if (td->td_proc->p_fd->fd_rdir == NULL) {
- printf("%s: root not mounted yet, no way to load image\n",
- imagename);
- goto done;
- }
error = linker_reference_module(imagename, NULL, &result);
if (error != 0) {
printf("%s: could not load firmware image, error %d\n",

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 23, 5:53 PM (25 m, 5 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35410302
Default Alt Text
D22571.id64943.diff (1 KB)

Event Timeline