From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wu Fengguang Subject: [stable] [PATCH] devmem: fix kmem write bug on memory holes Date: Thu, 4 Feb 2010 10:43:54 +0800 Message-ID: <20100204024353.GA13576@localhost> References: <20100122045914.993668874@intel.com> <20100203234724.GA23902@kroah.com> <20100204024202.GD6343@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Andrew Morton , Greg Kroah-Hartman , LKML , Linux Memory Management List , Andi Kleen , "linux-fsdevel@vger.kernel.org" , "stable@kernel.org" , KAMEZAWA Hiroyuki To: Greg KH Return-path: Content-Disposition: inline In-Reply-To: <20100204024202.GD6343@localhost> Sender: owner-linux-mm@kvack.org List-Id: linux-fsdevel.vger.kernel.org From: Wu Fengguang commit c85e9a97c4102ce2e83112da850d838cfab5ab13 upstream. write_kmem() used to assume vwrite() always return the full buffer length. However now vwrite() could return 0 to indicate memory hole. This creates a bug that "buf" is not advanced accordingly. Fix it to simply ignore the return value, hence the memory hole. CC: Andi Kleen CC: Benjamin Herrenschmidt CC: Christoph Lameter CC: Ingo Molnar CC: Tejun Heo CC: Nick Piggin CC: KAMEZAWA Hiroyuki CC: Signed-off-by: Wu Fengguang --- drivers/char/mem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- linux-2.6.32.orig/drivers/char/mem.c 2010-02-04 10:37:55.000000000 +0800 +++ linux-2.6.32/drivers/char/mem.c 2010-02-04 10:37:59.000000000 +0800 @@ -599,7 +599,7 @@ static ssize_t write_kmem(struct file * break; } } - len = vwrite(kbuf, (char *)p, len); + vwrite(kbuf, (char *)p, len); count -= len; buf += len; virtr += len; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org