From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753451Ab3AXOOq (ORCPT ); Thu, 24 Jan 2013 09:14:46 -0500 Received: from mga01.intel.com ([192.55.52.88]:31977 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751004Ab3AXOOo (ORCPT ); Thu, 24 Jan 2013 09:14:44 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.84,529,1355126400"; d="scan'208";a="277909658" Date: Thu, 24 Jan 2013 22:14:41 +0800 From: Fengguang Wu To: Jan Kara Cc: paul.szabo@sydney.edu.au, linux-mm@kvack.org, 695182@bugs.debian.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] Negative (setpoint-dirty) in bdi_position_ratio() Message-ID: <20130124141441.GA12745@localhost> References: <201301200002.r0K02Atl031280@como.maths.usyd.edu.au> <20130122235438.GB7497@quack.suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130122235438.GB7497@quack.suse.cz> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 23, 2013 at 12:54:38AM +0100, Jan Kara wrote: > On Sun 20-01-13 11:02:10, paul.szabo@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 psz@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 > > Reference: http://bugs.debian.org/695182 > > Signed-off-by: Paul Szabo > Ah, good catch. Thanks for the patch. You can add: > Reviewed-by: Jan Kara > > I've also added CC to writeback maintainer. Applied. Thanks! It's a good fix. Thanks, Fengguang