> This is a patch for mkdir on same purpose.
> And revised superio functions, I am afraid the last patch might stop the
> scheduler.

This patch was removing tasklist_lock, but I think write_lock_irq()
instead of write_lock() is the answer.
Please apply this patch after the previous patch.

Junjiro Okajima


--- subr.c      23 Feb 2006 14:19:05 -0000      1.2
+++ subr.c      24 Feb 2006 08:47:13 -0000
@@ -284,11 +284,11 @@ void superio_store(struct superio *sio)
                     | CAP_TO_MASK(CAP_SETPCAP)
                     | CAP_TO_MASK(CAP_SETUID));
 
-       //write_lock(&tasklist_lock);   /* task_capability_lock is not exported 
*/
+       write_lock_irq(&tasklist_lock); /* task_capability_lock is not exported 
*/
        err = security_capget(current, &sio->cap.effective,
                              &sio->cap.inheritable, &sio->cap.permitted);
        if (err) {
-               write_unlock(&tasklist_lock);
+               write_unlock_irq(&tasklist_lock);
                printk(KERN_WARNING UNIONFS_NAME
                       ": %.*s[%d]: security_capget failed\n",
                       sizeof(current->comm), current->comm, current->pid);
@@ -298,7 +298,7 @@ void superio_store(struct superio *sio)
        super = cap_drop(super, drop);
        security_capset_set(current, &super, &sio->cap.inheritable,
                            &sio->cap.permitted);
-       //write_unlock(&tasklist_lock);
+       write_unlock_irq(&tasklist_lock);
 
        rl = current->signal->rlim + RLIMIT_CORE;
        task_lock(current->group_leader);       //??
@@ -317,10 +317,10 @@ void superio_revert(struct superio *sio)
        current->signal->rlim[RLIMIT_CORE].rlim_cur = sio->rlim_core;
        task_unlock(current->group_leader);
 
-       //write_lock(&tasklist_lock);   /* task_capability_lock is not exported 
*/
+       write_lock_irq(&tasklist_lock); /* task_capability_lock is not exported 
*/
        security_capset_set(current, &sio->cap.effective,
                            &sio->cap.inheritable, &sio->cap.permitted);
-       //write_unlock(&tasklist_lock);
+       write_unlock_irq(&tasklist_lock);
 }
 
 /*
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to