Re: [PATCH] mm: Fix dirty_bytes/dirty_background_bytes sysctls on64bit arches

From: Peter Zijlstra
Date: Sun Feb 01 2009 - 04:20:42 EST


On Sun, 2009-02-01 at 02:22 +0100, Sven Wegener wrote:
> We need to pass an unsigned long as the minimum, because it gets casted
> to an unsigned long in the sysctl handler. If we pass an int, we'll
> access four more bytes on 64bit arches, resulting in a random minimum
> value.

If that's so, how can any of those other limit values still be good?

> Signed-off-by: Sven Wegener <sven.wegener@xxxxxxxxxxx>
> ---
> kernel/sysctl.c | 5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index 790f9d7..c5ef44f 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -101,6 +101,7 @@ static int two = 2;
>
> static int zero;
> static int one = 1;
> +static unsigned long one_ul = 1;
> static int one_hundred = 100;
>
> /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
> @@ -974,7 +975,7 @@ static struct ctl_table vm_table[] = {
> .mode = 0644,
> .proc_handler = &dirty_background_bytes_handler,
> .strategy = &sysctl_intvec,
> - .extra1 = &one,
> + .extra1 = &one_ul,
> },
> {
> .ctl_name = VM_DIRTY_RATIO,
> @@ -995,7 +996,7 @@ static struct ctl_table vm_table[] = {
> .mode = 0644,
> .proc_handler = &dirty_bytes_handler,
> .strategy = &sysctl_intvec,
> - .extra1 = &one,
> + .extra1 = &one_ul,
> },
> {
> .procname = "dirty_writeback_centisecs",

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