2
0
Fork 0

Added missing use of mmap_sem around do_mmap calls.

This commit is contained in:
jaggy 2001-08-28 12:11:58 +00:00
parent 7a5f0bea03
commit fc2540cfd0
2 changed files with 19 additions and 0 deletions

View file

@ -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

View file

@ -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(&current->mm->mmap_sem);
ret = do_mmap(file, vaddr, vsize, prot, flags | MAP_FIXED, file_offset);
up_mmap_sem(&current->mm->mmap_sem);
if (file) fput(file);
return (ret == vaddr ? 0 : ret);
}
down_mmap_sem(&current->mm->mmap_sem);
error = do_mmap(file, vaddr, vsize, prot, flags & 0x7fffffff, file_offset);
up_mmap_sem(&current->mm->mmap_sem);
if (file) fput(file);
return error;
#endif