Author: kib
Date: Sun Nov 17 14:52:45 2019
New Revision: 354789
URL: https://svnweb.freebsd.org/changeset/base/354789

Log:
  kern_exec: p_osrel and p_fctl0 were obliterated by failed execve(2) attempt.
  
  Zeroing of them is needed so that an image activator can update the
  values as appropriate (or not set at all).
  
  Reviewed by:  markj
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week
  Differential revision:        https://reviews.freebsd.org/D22379

Modified:
  head/sys/kern/kern_exec.c

Modified: head/sys/kern/kern_exec.c
==============================================================================
--- head/sys/kern/kern_exec.c   Sun Nov 17 14:41:47 2019        (r354788)
+++ head/sys/kern/kern_exec.c   Sun Nov 17 14:52:45 2019        (r354789)
@@ -361,7 +361,6 @@ do_execve(struct thread *td, struct image_args *args, 
        struct ucred *oldcred;
        struct uidinfo *euip = NULL;
        register_t *stack_base;
-       int error, i;
        struct image_params image_params, *imgp;
        struct vattr attr;
        int (*img_first)(struct image_params *);
@@ -380,6 +379,8 @@ do_execve(struct thread *td, struct image_args *args, 
 #ifdef HWPMC_HOOKS
        struct pmckern_procexec pe;
 #endif
+       int error, i, orig_osrel;
+       uint32_t orig_fctl0;
        static const char fexecv_proc_title[] = "(fexecv)";
 
        imgp = &image_params;
@@ -405,6 +406,8 @@ do_execve(struct thread *td, struct image_args *args, 
        imgp->attr = &attr;
        imgp->args = args;
        oldcred = p->p_ucred;
+       orig_osrel = p->p_osrel;
+       orig_fctl0 = p->p_fctl0;
 
 #ifdef MAC
        error = mac_execve_enter(imgp, mac_p);
@@ -868,6 +871,11 @@ interpret:
        SDT_PROBE1(proc, , , exec__success, args->fname);
 
 exec_fail_dealloc:
+       if (error != 0) {
+               p->p_osrel = orig_osrel;
+               p->p_fctl0 = orig_fctl0;
+       }
+
        if (imgp->firstpage != NULL)
                exec_unmap_first_page(imgp);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to