Added missing use of mmap_sem around do_mmap calls.
This commit is contained in:
parent
7a5f0bea03
commit
fc2540cfd0
|
@ -1,5 +1,8 @@
|
|||
Tue Aug 28 10:29:06 BST 2001
|
||||
|
||||
* Added missing use of mmap_sem around do_mmap calls.
|
||||
-- Mike
|
||||
|
||||
* Change namei/dput to user_path_walk/path_release for
|
||||
compatibility with 2.3.99 and later.
|
||||
-- Mike
|
||||
|
|
|
@ -25,6 +25,18 @@
|
|||
#endif
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,3)
|
||||
# define down_mmap_sem(sem) down_write(sem)
|
||||
# define up_mmap_sem(sem) up_write(sem)
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,106)
|
||||
# define down_mmap_sem(sem) down(sem)
|
||||
# define up_mmap_sem(sem) up(sem)
|
||||
#else
|
||||
# define down_mmap_sem(sem)
|
||||
# define up_mmap_sem(sem)
|
||||
#endif
|
||||
|
||||
|
||||
int ibcs_memcntl(unsigned int vaddr, unsigned int vsize, int op, int flags)
|
||||
{
|
||||
switch (op) {
|
||||
|
@ -81,12 +93,16 @@ int ibcs_mmap(unsigned int vaddr, unsigned int vsize, int prot, int flags,
|
|||
if (personality(PER_SVR4)
|
||||
&& !(flags & 0x80000000) && vaddr) {
|
||||
unsigned int ret;
|
||||
down_mmap_sem(¤t->mm->mmap_sem);
|
||||
ret = do_mmap(file, vaddr, vsize, prot, flags | MAP_FIXED, file_offset);
|
||||
up_mmap_sem(¤t->mm->mmap_sem);
|
||||
if (file) fput(file);
|
||||
return (ret == vaddr ? 0 : ret);
|
||||
}
|
||||
|
||||
down_mmap_sem(¤t->mm->mmap_sem);
|
||||
error = do_mmap(file, vaddr, vsize, prot, flags & 0x7fffffff, file_offset);
|
||||
up_mmap_sem(¤t->mm->mmap_sem);
|
||||
if (file) fput(file);
|
||||
return error;
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue