Re: MAP_NORESERVE with MAP_SHARED

From: David Mosberger (davidm@napali.hpl.hp.com)
Date: Fri Jul 12 2002 - 16:39:58 EST


>>>>> On 12 Jul 2002 23:15:02 +0100, Alan Cox <alan@lxorguk.ukuu.org.uk> said:

  Alan> On Fri, 2002-07-12 at 21:39, David Mosberger wrote:
>> Is there a good reason why the MAP_NORESERVE flag is ignored when
>> MAP_SHARED is specified? (Hint: it's the call to vm_enough_memory()
>> in shmem_file_setup() that's causing MAP_NORESERVE to be ignored.)

  Alan> In no overcommit mode MAP_NORESERVE is never honoured. In conventional
  Alan> overcommit mode I may have broken something between base and -ac. Which
  Alan> bit of the code are you looking at ?

2.4.18, though as far as I looked, the latest 2.5 has the same behavior.
Specifically, in do_mmap_pgoff() we have:

        /* Private writable mapping? Check memory availability.. */
        if ((vm_flags & (VM_SHARED | VM_WRITE)) == VM_WRITE &&
            !(flags & MAP_NORESERVE) &&
            !vm_enough_memory(len >> PAGE_SHIFT))
                return -ENOMEM;

and in shmem_file_setup() we have:

        if (!vm_enough_memory((size) >> PAGE_CACHE_SHIFT))
                return ERR_PTR(-ENOMEM);

So, if we don't have MAP_SHARED (first case), MAP_NORESERVE is
honored, whereas with MAP_SHARED (second case), MAP_NORESERVE is
ignored.

        --david
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jul 15 2002 - 22:00:24 EST