Messages in this thread | | | Subject | Re: [PATCH] mm: Fix dirty_bytes/dirty_background_bytes sysctls on 64bit arches | From | Peter Zijlstra <> | Date | Sun, 01 Feb 2009 10:19:39 +0100 |
| |
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@stealer.net> > --- > 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",
| |