> 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