Prev: arch/powerpc/kernel: Drop unnecessary null test
Next: [PATCH 0/2] Adding four writeback files in /proc/sys/vm
From: Andrew Morton on 3 Aug 2010 18:30 On Mon, 2 Aug 2010 18:09:51 +0200 Oleg Nesterov <oleg(a)redhat.com> wrote: > We have a bugreport which blames div64_u64() on 32bit platforms. > > However, the code obviously doesn't even try to pretend it can do > the 64bit division precisely. If there is something in the high > word of divisor, div64_u64() just shifts both arguments and throws > out the low bits. > > Add a small comment to avoid the confusion. > > Signed-off-by: Oleg Nesterov <oleg(a)redhat.com> > --- > > lib/div64.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > --- a/lib/div64.c > +++ b/lib/div64.c > @@ -77,7 +77,10 @@ s64 div_s64_rem(s64 dividend, s32 diviso > EXPORT_SYMBOL(div_s64_rem); > #endif > > -/* 64bit divisor, dividend and result. dynamic precision */ > +/* > + * 64bit divisor, dividend and result. Dynamic precision, unless > + * divisor fits in u32 result is not exactly correct. > + */ > #ifndef div64_u64 > u64 div64_u64(u64 dividend, u64 divisor) > { Well that was a bit lazy of us - I wonder how hard it is to fix. At present people will test their code on 64-bit only to find out later that it doesn't work correctly on 32-bit. Bad. Perhaps we should similarly break the 64-bit version :) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Ben Woodard on 3 Aug 2010 20:20
Andrew, On Tue, 2010-08-03 at 15:28 -0700, Andrew Morton wrote: > Well that was a bit lazy of us - I wonder how hard it is to fix. > > At present people will test their code on 64-bit only to find out > later > that it doesn't work correctly on 32-bit. Bad. Perhaps we should > similarly break the 64-bit version :) I just talked to Brian. He's got an implementation that does the division correctly. He's going to clean it up and send you a patch so that it will work without losing precision on both 32b and 64b. It is based upon public domain code from http://www.hackersdelight.org and has been proven to be correct in all cases. -ben -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |