git: kernel - Fix rare allproc scan vs p_ucred race

Matthew Dillon dillon at
Tue Sep 26 21:34:55 PDT 2017

commit 6cbfbdb972fd2d15f247741880322725f3ce638a
Author: Matthew Dillon <dillon at>
Date:   Tue Sep 26 21:31:04 2017 -0700

    kernel - Fix rare allproc scan vs p_ucred race
    * This race can occur because p->p_ucred can change out from under
      an allproc scan when the allproc scan is filtering based on
    * Access p->p_ucred via the per-process spinlock (p->p_spin).  Also
      maintain a  cache of the last ucred during the loop in order to
      avoid having to spin-lock every process.
    * Add missing spinlock around p->p_ucred = NULL in exit1().  This
      is also only applicable to races against allproc scans since
      p_token is held during exit1().
    Reported-by: mjg_

Summary of changes:
 sys/kern/kern_exit.c | 10 ++++++++--
 sys/kern/kern_proc.c | 46 +++++++++++++++++++++++++++++++++++++---------
 sys/sys/proc.h       |  7 +++++--
 3 files changed, 50 insertions(+), 13 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list