diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/config.in | 3 | ||||
-rw-r--r-- | arch/ia64/defconfig | 4 | ||||
-rw-r--r-- | arch/ia64/ia32/sys_ia32.c | 14 |
3 files changed, 11 insertions, 10 deletions
diff --git a/arch/ia64/config.in b/arch/ia64/config.in index 2d1a11980..3008c6152 100644 --- a/arch/ia64/config.in +++ b/arch/ia64/config.in @@ -1,3 +1,6 @@ +# For a description of the syntax of this configuration file, +# see Documentation/kbuild/config-language.txt. +# mainmenu_name "Kernel configuration of Linux for IA-64 machines" mainmenu_option next_comment diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig index d41bba5b1..8dac10752 100644 --- a/arch/ia64/defconfig +++ b/arch/ia64/defconfig @@ -59,10 +59,6 @@ CONFIG_EXPERIMENTAL=y # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_DEV_DAC960 is not set - -# -# Additional Block Devices -# # CONFIG_BLK_DEV_LOOP is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_BLK_DEV_RAM is not set diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c index dae2f2265..06642dcec 100644 --- a/arch/ia64/ia32/sys_ia32.c +++ b/arch/ia64/ia32/sys_ia32.c @@ -231,7 +231,10 @@ do_mmap_fake(struct file *file, unsigned long addr, unsigned long len, back = kmalloc(PAGE_SIZE - ((addr + len) & ~PAGE_MASK), GFP_KERNEL); memcpy(back, addr + len, PAGE_SIZE - ((addr + len) & ~PAGE_MASK)); } - if ((r = do_mmap(0, baddr, len + (addr - baddr), prot, flags | MAP_ANONYMOUS, 0)) < 0) + down(¤t->mm->mmap_sem); + r = do_mmap(0, baddr, len + (addr - baddr), prot, flags | MAP_ANONYMOUS, 0); + up(¤t->mm->mmap_sem); + if (r < 0) return(r); #ifndef DDD if (addr == 0) @@ -290,7 +293,6 @@ sys32_mmap(struct mmap_arg_struct *arg) if (copy_from_user(&a, arg, sizeof(a))) return -EFAULT; - down(¤t->mm->mmap_sem); lock_kernel(); if (!(a.flags & MAP_ANONYMOUS)) { error = -EBADF; @@ -306,17 +308,17 @@ sys32_mmap(struct mmap_arg_struct *arg) if (1) { #endif // DDD unlock_kernel(); - up(¤t->mm->mmap_sem); error = do_mmap_fake(file, a.addr, a.len, a.prot, a.flags, a.offset); - down(¤t->mm->mmap_sem); lock_kernel(); - } else + } else { + down(¤t->mm->mmap_sem); error = do_mmap(file, a.addr, a.len, a.prot, a.flags, a.offset); + up(¤t->mm->mmap_sem); + } if (file) fput(file); out: unlock_kernel(); - up(¤t->mm->mmap_sem); return error; } |