From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S269039AbUJQDmj (ORCPT ); Sat, 16 Oct 2004 23:42:39 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S269046AbUJQDmj (ORCPT ); Sat, 16 Oct 2004 23:42:39 -0400 Received: from clock-tower.bc.nu ([81.2.110.250]:43986 "EHLO localhost.localdomain") by vger.kernel.org with ESMTP id S269039AbUJQDmY (ORCPT ); Sat, 16 Oct 2004 23:42:24 -0400 Subject: Re: Memory leak in 2.4.27 kernel, using mmap raw packet sockets From: Alan Cox To: Marcelo Tosatti Cc: bgagnon@coradiant.com, Linux Kernel Mailing List In-Reply-To: <20041015182352.GA4937@logos.cnet> References: <20041015182352.GA4937@logos.cnet> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1097980764.13226.21.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 (1.4.6-2) Date: Sun, 17 Oct 2004 03:39:26 +0100 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On Gwe, 2004-10-15 at 19:23, Marcelo Tosatti wrote: > I prefer doing the "if (PageReserved(page)) put_page_testzero(page)" as > you propose instead of changing get_user_pages(), as there are several > users which rely on its behaviour. > > I have applied your fix to the 2.4 BK tree. That isnt sufficient. Consider anything else taking a reference to the page and the refcount going negative. And yes 2.6.x has this problem and far worse in some ways, but it also has the mechanism to fix it. 2.6.x uses VM_IO as a VMA flag which tells the kernel two things a) get_user_pages fails on it b) core dumping of it is forbidden 2.6.x is missing a whole pile of these (fixed in the 2.6.9-ac tree I'm putting together). I *think* remap_page_range() in 2.6.x can just set VM_IO, but older kernels didn't pass the vma so all the users would need fixing (OSS audio, media/video, usb audio, usb video, frame buffer etc). Alan