Re: Bug in 2.4.26 in mm/filemap.c when using RLIMIT_RSS

From: Ake
Date: Thu Jan 27 2005 - 01:40:29 EST


On Wed, Jan 26, 2005 at 12:49:04PM -0200, Marcelo Tosatti wrote:
> > There is also a misinformative comment in fs/proc/array.c
> > in proc_pid_stat where it says
> > mm ? mm->rss : 0, /* you might want to shift this left 3 */
> > the number 3 should probably be PAGE_SHIFT-10.

Don't forget the comment (it's still there in 2.6) :-)

> Amazing that this has never been noticed before - I bet not many people use RSS
> limits with madvise().

Neither do we. :-)

I just found it when trying to figure out if the kernel actually used
any of the rlimits and if so how.
(Trying to make PBS work correctly)

> This transform the rlimit in pages before the comparison, can you please test
> it.
>
> --- a/mm/filemap.c.orig 2004-11-17 09:54:22.000000000 -0200
> +++ b/mm/filemap.c 2005-01-26 15:21:10.614842296 -0200
> @@ -2609,6 +2609,9 @@
> error = -EIO;
> rlim_rss = current->rlim ? current->rlim[RLIMIT_RSS].rlim_cur :
> LONG_MAX; /* default: see resource.h */
> +
> + rlim_rss = (rlim_rss & PAGE_MASK) >> PAGE_SHIFT;
> +
> if ((vma->vm_mm->rss + (end - start)) > rlim_rss)
> return error;

Since we don't use it i can't really test it, but a visual inspection is
good enough in this simple case. And since this is the only place in 2.4
that RLIMIT_RSS is used, the problem is solved.

BTW do you know if there is any plans for 2.6++ to actually use
RLIMIT_RSS? I saw a hint in that direction in mm/thrash.c
grab_swap_token but it is commented out and only skeleton code...

I'm asking since the above code piece has been removed.

--
Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
Internet: ake@xxxxxxxxxxxx Phone: +46 90 7866134 Fax: +46 90 7866126
Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/