Author: mmacy
Date: Thu May 17 19:08:28 2018
New Revision: 333755
URL: https://svnweb.freebsd.org/changeset/base/333755

Log:
  epoch(9): restore thread priority on exit if it was changed by a waiter
  
  Reported by:  markj
  Approved by:  sbruno

Modified:
  head/sys/kern/subr_epoch.c

Modified: head/sys/kern/subr_epoch.c
==============================================================================
--- head/sys/kern/subr_epoch.c  Thu May 17 19:06:44 2018        (r333754)
+++ head/sys/kern/subr_epoch.c  Thu May 17 19:08:28 2018        (r333755)
@@ -290,6 +290,7 @@ epoch_enter_internal(epoch_t epoch, struct thread *td)
 
        INIT_CHECK(epoch);
        critical_enter();
+       td->td_pre_epoch_prio = td->td_priority;
        eps = epoch->e_pcpu[curcpu];
 #ifdef INVARIANTS
        MPASS(td->td_epochnest < UCHAR_MAX - 2);
@@ -326,6 +327,11 @@ epoch_exit_internal(epoch_t epoch, struct thread *td)
        TAILQ_REMOVE(&eps->eps_record.er_tdlist, td, td_epochq);
        eps->eps_record.er_gen++;
        sched_unpin();
+       if (__predict_false(td->td_pre_epoch_prio != td->td_priority)) {
+               thread_lock(td);
+               sched_prio(td, td->td_pre_epoch_prio);
+               thread_unlock(td);
+       }
        critical_exit();
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to