Lines 25-30
Link Here
|
25 |
#include <asm/signal.h> |
25 |
#include <asm/signal.h> |
26 |
#include <linux/signal.h> |
26 |
#include <linux/signal.h> |
27 |
#include <linux/sched.h> |
27 |
#include <linux/sched.h> |
|
|
28 |
#include <linux/version.h> |
28 |
|
29 |
|
29 |
#include "subfs.h" |
30 |
#include "subfs.h" |
30 |
|
31 |
|
Lines 221-234
Link Here
|
221 |
struct vfsmount *child; |
222 |
struct vfsmount *child; |
222 |
|
223 |
|
223 |
/* This is ugly, but prevents a lockup during mount. */ |
224 |
/* This is ugly, but prevents a lockup during mount. */ |
|
|
225 |
|
226 |
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
227 |
mutex_unlock(&dir->i_mutex); |
228 |
#else |
224 |
up(&dir->i_sem); |
229 |
up(&dir->i_sem); |
|
|
230 |
#endif |
231 |
|
225 |
if (down_interruptible(&sfs_mnt->sem)) { |
232 |
if (down_interruptible(&sfs_mnt->sem)) { |
226 |
down(&dir->i_sem);/*put the dir sem back down if interrupted*/ |
233 |
|
|
|
234 |
# if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
235 |
mutex_lock(&dir->i_mutex); /*put the dir sem back down if interrupted*/ |
236 |
#else |
237 |
down(&dir->i_sem); /*put the dir sem back down if interrupted*/ |
238 |
#endif |
227 |
return ERR_PTR(-ERESTARTSYS); |
239 |
return ERR_PTR(-ERESTARTSYS); |
228 |
} |
240 |
} |
229 |
child = get_child_mount(sfs_mnt); |
241 |
child = get_child_mount(sfs_mnt); |
230 |
up(&sfs_mnt->sem); |
242 |
up(&sfs_mnt->sem); |
|
|
243 |
|
244 |
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15) |
245 |
mutex_lock(&dir->i_mutex); /*put the dir sem back down if interrupted*/ |
246 |
#else |
231 |
down(&dir->i_sem); |
247 |
down(&dir->i_sem); |
|
|
248 |
#endif |
232 |
if (IS_ERR(child)) |
249 |
if (IS_ERR(child)) |
233 |
return (void *) child; |
250 |
return (void *) child; |
234 |
subfs_send_signal(); |
251 |
subfs_send_signal(); |