Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F109048465
D30918.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D30918.diff
View Options
diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -1246,6 +1246,7 @@
map = &vmspace->vm_map;
imgp->proc->p_sysent = sv;
+ imgp->proc->p_elf_brandinfo = brand_info;
maxv = vm_map_max(map) - lim_max(td, RLIMIT_STACK);
if (et_dyn_addr == ET_DYN_ADDR_RAND) {
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -397,6 +397,7 @@
#endif
int error, i, orig_osrel;
uint32_t orig_fctl0;
+ Elf_Brandinfo *orig_brandinfo;
static const char fexecv_proc_title[] = "(fexecv)";
imgp = &image_params;
@@ -427,6 +428,7 @@
oldcred = p->p_ucred;
orig_osrel = p->p_osrel;
orig_fctl0 = p->p_fctl0;
+ orig_brandinfo = p->p_elf_brandinfo;
#ifdef MAC
error = mac_execve_enter(imgp, mac_p);
@@ -499,6 +501,7 @@
imgp->proc->p_osrel = 0;
imgp->proc->p_fctl0 = 0;
+ imgp->proc->p_elf_brandinfo = NULL;
/*
* Implement image setuid/setgid.
@@ -894,6 +897,7 @@
if (error != 0) {
p->p_osrel = orig_osrel;
p->p_fctl0 = orig_fctl0;
+ p->p_elf_brandinfo = orig_brandinfo;
}
if (imgp->firstpage != NULL)
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -100,7 +100,7 @@
"struct proc KBI p_filemon");
_Static_assert(offsetof(struct proc, p_comm) == 0x3d0,
"struct proc KBI p_comm");
-_Static_assert(offsetof(struct proc, p_emuldata) == 0x4b0,
+_Static_assert(offsetof(struct proc, p_emuldata) == 0x4b8,
"struct proc KBI p_emuldata");
#endif
#ifdef __i386__
@@ -120,7 +120,7 @@
"struct proc KBI p_filemon");
_Static_assert(offsetof(struct proc, p_comm) == 0x27c,
"struct proc KBI p_comm");
-_Static_assert(offsetof(struct proc, p_emuldata) == 0x308,
+_Static_assert(offsetof(struct proc, p_emuldata) == 0x30c,
"struct proc KBI p_emuldata");
#endif
diff --git a/sys/sys/imgact_elf.h b/sys/sys/imgact_elf.h
--- a/sys/sys/imgact_elf.h
+++ b/sys/sys/imgact_elf.h
@@ -91,6 +91,7 @@
Elf_Brandnote *brand_note;
boolean_t (*header_supported)(struct image_params *,
int32_t *, uint32_t *);
+ /* High 8 bits of flags is private to the ABI */
#define BI_CAN_EXEC_DYN 0x0001
#define BI_BRAND_NOTE 0x0002 /* May have note.ABI-tag section. */
#define BI_BRAND_NOTE_MANDATORY 0x0004 /* Must have note.ABI-tag section. */
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -702,6 +702,8 @@
our subtree. */
uint16_t p_elf_machine; /* (x) ELF machine type */
uint64_t p_elf_flags; /* (x) ELF flags */
+ void *p_elf_brandinfo; /* (x) Elf_Brandinfo, NULL for
+ non ELF binaries. */
/* End area that is copied on creation. */
#define p_endcopy p_xexit
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 1, 3:07 AM (21 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16374555
Default Alt Text
D30918.diff (2 KB)
Attached To
Mode
D30918: Add a link to the Elf_Brandinfo into the struct sysentvec.
Attached
Detach File
Event Timeline
Log In to Comment