--- kernel-source-subfs-0.9/subfs.c.alt-i_mutex 2005-08-14 19:04:57 +0400 +++ kernel-source-subfs-0.9/subfs.c 2006-03-11 22:30:00 +0300 @@ -221,14 +221,14 @@ static struct dentry *subfs_lookup(struc struct vfsmount *child; /* This is ugly, but prevents a lockup during mount. */ - up(&dir->i_sem); + mutex_unlock(&dir->i_mutex); if (down_interruptible(&sfs_mnt->sem)) { - down(&dir->i_sem);/*put the dir sem back down if interrupted*/ + mutex_lock(&dir->i_mutex);/*put the dir sem back down if interrupted*/ return ERR_PTR(-ERESTARTSYS); } child = get_child_mount(sfs_mnt); up(&sfs_mnt->sem); - down(&dir->i_sem); + mutex_lock(&dir->i_mutex); if (IS_ERR(child)) return (void *) child; subfs_send_signal();