Hi, madvise() system call checks its arguments holding current->mm->mmap_sem semaphore. I know that madvise() shouldn't be perfomance critical, but fix it so obvious :) Patch against 2.6.1-rc Best regards. -- Andrey Panin | Linux and UNIX system administrator pazke _at_ donpac.ru | PGP key: wwwkeys.pgp.net
diff -urN -X /usr/share/dontdiff linux-2.6.0-test3.vanilla/mm/madvise.c linux-2.6.0-test3/mm/madvise.c --- linux-2.6.0-test3.vanilla/mm/madvise.c 2003-08-09 08:34:02.000000000 +0400 +++ linux-2.6.0-test3/mm/madvise.c 2004-01-01 16:51:58.000000000 +0300 @@ -166,20 +166,20 @@ unsigned long end; struct vm_area_struct * vma; int unmapped_error = 0; - int error = -EINVAL; - - down_write(¤t->mm->mmap_sem); + int error; if (start & ~PAGE_MASK) - goto out; + return -EINVAL; + len = (len + ~PAGE_MASK) & PAGE_MASK; end = start + len; if (end < start) - goto out; + return -EINVAL; - error = 0; if (end == start) - goto out; + return 0; + + down_write(¤t->mm->mmap_sem); /* * If the interval [start,end) covers some unmapped address
Attachment:
signature.asc
Description: Digital signature
- Prev by Date: Re: [autofs] [RFC] Towards a Modern Autofs
- Next by Date: Broken big-endian SMP /proc/irq/prof_cpu_mask (2.6.0-mm1)?
- Previous by thread: ACPI in 2.6
- Next by thread: Broken big-endian SMP /proc/irq/prof_cpu_mask (2.6.0-mm1)?
- Indexes:[Main][Thread]