From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754371AbYKQRfU (ORCPT ); Mon, 17 Nov 2008 12:35:20 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752799AbYKQRfF (ORCPT ); Mon, 17 Nov 2008 12:35:05 -0500 Received: from gw.goop.org ([64.81.55.164]:54971 "EHLO mail.goop.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752154AbYKQRfB (ORCPT ); Mon, 17 Nov 2008 12:35:01 -0500 Message-ID: <4921AB44.4090706@goop.org> Date: Mon, 17 Nov 2008 09:35:00 -0800 From: Jeremy Fitzhardinge User-Agent: Thunderbird 2.0.0.17 (X11/20081009) MIME-Version: 1.0 To: Linus Torvalds CC: Ingo Molnar , Jens Axboe , Tejun Heo , Arjan van de Ven , Hugh Dickins , linux-kernel@vger.kernel.org, akpm@linux-foundation.org Subject: Re: [PATCH] Fix kunmap() argument in sg_miter_stop References: <20081117081117.GD26778@kernel.dk> <20081117082201.GB24603@elte.hu> <20081117083022.GE26778@kernel.dk> <20081117085046.GE28786@elte.hu> <20081117085807.GF26778@kernel.dk> <20081117093425.GG26778@kernel.dk> <20081117094147.GJ28786@elte.hu> <20081117094551.GI26778@kernel.dk> <20081117111350.GJ26778@kernel.dk> <4921A4F3.1030309@goop.org> <20081117171005.GA25729@elte.hu> <4921A6BE.7000206@goop.org> In-Reply-To: X-Enigmail-Version: 0.95.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Linus Torvalds wrote: > On Mon, 17 Nov 2008, Jeremy Fitzhardinge wrote: > > >> Pass the struct page * to kunmap, not the vaddr of the mapping itself. >> >> Pointed out by Jens Axboe >> >> Signed-off-by: Jeremy Fitzhardinge >> --- >> drivers/xen/balloon.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> =================================================================== >> --- a/drivers/xen/balloon.c >> +++ b/drivers/xen/balloon.c >> @@ -120,7 +120,7 @@ >> if (PageHighMem(page)) { >> void *v = kmap(page); >> clear_page(v); >> - kunmap(v); >> + kunmap(page); >> } else { >> void *v = page_address(page); >> clear_page(v); >> > > Well, quite frankly, the whole thing looks like crud. > > First off, 'kmap/kunmap' work on regular pages too. So if you're highmem > aware, you should just do > > void *v = kmap(page); > clear_page(v); > kunmap(page); > > and be done with it. > > Secondly, we actually have a function called "clear_highpage()" that does > this, except it uses kmap_atomic(page, KM_USER0). Which is _probably > better anyway, but I didn't check if there is some magical reason why it > wouldn't work. > OK. Subject: xen/balloon: use clear_highpage() Just use clear_highpage() rather than reimplementing it poorly. Signed-off-by: Jeremy Fitzhardinge --- drivers/xen/balloon.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) =================================================================== --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c @@ -122,14 +122,7 @@ static void scrub_page(struct page *page) { #ifdef CONFIG_XEN_SCRUB_PAGES - if (PageHighMem(page)) { - void *v = kmap(page); - clear_page(v); - kunmap(v); - } else { - void *v = page_address(page); - clear_page(v); - } + clear_highpage(page); #endif }