Messages in this thread Patch in this message | | | Date | Mon, 9 Dec 2002 15:04:26 +1100 | From | Kingsley Cheung <> | Subject | [TRIVIAL PATCH 2.4.20] madvise_willneed makes bad limit comparison |
| |
Hi,
'madvise_willneed' makes an incorrect rss limit comparison. It directly compares rlim[RLIMIT_RSS].rlim_cur to rss. The former is in bytes, whereas the latter is in pages. The fix for this is trivial.
[As an aside, one question is whether this limit check is needed at all. Most rss limit enforcement implementations that I've seen are 'soft', whereas this would give the limit 'hard' semantics. Do we really want 'hard' limit semantics?]
diff -urN linux-2.4.20/mm/filemap.c linux-2.4.20patched/mm/filemap.c --- linux-2.4.20/mm/filemap.c Mon Dec 9 14:19:13 2002 +++ linux-2.4.20patched/mm/filemap.c Mon Dec 9 14:36:08 2002 @@ -2471,10 +2471,12 @@ /* Make sure this doesn't exceed the process's max rss. */ error = -EIO; - rlim_rss = current->rlim ? current->rlim[RLIMIT_RSS].rlim_cur : - LONG_MAX; /* default: see resource.h */ - if ((vma->vm_mm->rss + (end - start)) > rlim_rss) - return error; + rlim_rss = current->rlim[RLIMIT_RSS].rlim_cur; + if (rlim_rss != RLIM_INFINITY) { + rlim_rss >>= PAGE_SHIFT; + if ((vma->vm_mm->rss + (end - start)) > rlim_rss) + return error; + } /* round to cluster boundaries if this isn't a "random" area. */ if (!VM_RandomReadHint(vma)) {
-- Kingsley - 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/
| |