git: kernel - misc MPSAFe work

Michael Neumann michaelneuma at googlemail.com
Sun Dec 20 04:52:30 PST 2009


2009/12/20 Matthew Dillon <dillon at crater.dragonflybsd.org>

commit 61f96b6ff60acbd1692d0bffe07b5e1f262327dc
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Dec 19 22:18:37 2009 -0800

    kernel - misc MPSAFe work

    * prisoncount, prison_hold(), and prison_free() are now MPSAFEI wonder if the change below is really neccessary, as LIST_INSERT_HEAD is not MP-safe andthe whole function kern_jail must be called with mp_lock hold. It just made me think that you missed 
to make the list insert race free until I saw that the function is always called with mp_lock held.--- a/sys/kern/kern_jail.c+++ b/sys/kern/kern_jail.c@@ -177,7 +177,7 @@ kern_jail(struct prison *pr, struct jail *j)
        LIST_INSERT_HEAD(&allprison, pr, pr_list);-       prisoncount++;+       atomic_add_int(&prisoncount, 1);And I wonder if in the error path, there is isn't missing an atomic_add_int(&prisoncount, -1):
  179         LIST_INSERT_HEAD(&allprison, pr, pr_list); 180         atomic_add_int(&prisoncount, 1); 181  182         error = kern_jail_attach(pr->pr_id); 183         if (error) { 184                 LIST_REMOVE(pr, pr_list);
 +                      atomic_add_int(&prisoncount, -1):  185                 varsymset_clean(&pr->pr_varsymset); 186         }Regards,  Michael




More information about the Commits mailing list