Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F140648623
D8167.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D8167.diff
View Options
Index: sys/kern/kern_linker.c
===================================================================
--- sys/kern/kern_linker.c
+++ sys/kern/kern_linker.c
@@ -89,7 +89,8 @@
/*
* Find a currently loaded file given its filename.
*/
-static linker_file_t linker_find_file_by_name(const char* _filename);
+#define LFFBN_IGNORE_INCOMPLETE 0x1
+static linker_file_t linker_find_file_by_name(const char* _filename, int flag);
/*
* Find a currently loaded file given its file id.
@@ -397,7 +398,7 @@
return (EPERM);
sx_assert(&kld_sx, SA_XLOCKED);
- lf = linker_find_file_by_name(filename);
+ lf = linker_find_file_by_name(filename, 0);
if (lf) {
KLD_DPF(FILE, ("linker_load_file: file %s is already loaded,"
" incrementing refs\n", filename));
@@ -522,7 +523,7 @@
}
static linker_file_t
-linker_find_file_by_name(const char *filename)
+linker_find_file_by_name(const char *filename, int flag)
{
linker_file_t lf;
char *koname;
@@ -532,9 +533,11 @@
sx_assert(&kld_sx, SA_XLOCKED);
TAILQ_FOREACH(lf, &linker_files, link) {
- if (strcmp(lf->filename, koname) == 0)
- break;
- if (strcmp(lf->filename, filename) == 0)
+ if (strcmp(lf->filename, koname) != 0 &&
+ strcmp(lf->filename, filename) != 0)
+ continue;
+ if ((lf->flags & LINKER_FILE_LINKED) != 0 ||
+ (flag & LFFBN_IGNORE_INCOMPLETE) == 0)
break;
}
free(koname, M_LINKER);
@@ -1150,7 +1153,7 @@
filename = linker_basename(pathname);
sx_xlock(&kld_sx);
- lf = linker_find_file_by_name(filename);
+ lf = linker_find_file_by_name(filename, LFFBN_IGNORE_INCOMPLETE);
if (lf)
td->td_retval[0] = lf->id;
else
@@ -2018,7 +2021,7 @@
* provide different versions of the same modules.
*/
filename = linker_basename(pathname);
- if (linker_find_file_by_name(filename))
+ if (linker_find_file_by_name(filename, 0))
error = EEXIST;
else do {
error = linker_load_file(pathname, &lfdep);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Dec 27, 9:55 AM (6 h, 6 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27302501
Default Alt Text
D8167.diff (1 KB)
Attached To
Mode
D8167: kern_linker: Hide incompletely loaded modules from userspace
Attached
Detach File
Event Timeline
Log In to Comment