On Wed, Jan 23, 2013 at 12:54:38AM +0100, Jan Kara wrote: > On Sun 20-01-13 11:02:10, paul.sz...@sydney.edu.au wrote: > > In bdi_position_ratio(), get difference (setpoint-dirty) right even when > > negative. Both setpoint and dirty are unsigned long, the difference was > > zero-padded thus wrongly sign-extended to s64. This issue affects all > > 32-bit architectures, does not affect 64-bit architectures where long > > and s64 are equivalent. > > > > In this function, dirty is between freerun and limit, the pseudo-float x > > is between [-1,1], expected to be negative about half the time. With > > zero-padding, instead of a small negative x we obtained a large positive > > one so bdi_position_ratio() returned garbage. > > > > Casting the difference to s64 also prevents overflow with left-shift; > > though normally these numbers are small and I never observed a 32-bit > > overflow there. > > > > (This patch does not solve the PAE OOM issue.) > > > > Paul Szabo p...@maths.usyd.edu.au http://www.maths.usyd.edu.au/u/psz/ > > School of Mathematics and Statistics University of Sydney Australia > > > > Reported-by: Paul Szabo <p...@maths.usyd.edu.au> > > Reference: http://bugs.debian.org/695182 > > Signed-off-by: Paul Szabo <p...@maths.usyd.edu.au> > Ah, good catch. Thanks for the patch. You can add: > Reviewed-by: Jan Kara <j...@suse.cz> > > I've also added CC to writeback maintainer.
Applied. Thanks! It's a good fix. Thanks, Fengguang -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org