From patchwork Tue Jul 5 18:42:54 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Russell King - ARM Linux X-Patchwork-Id: 945942 Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p65IhNZw002378 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 5 Jul 2011 18:43:45 GMT Received: from canuck.infradead.org ([2001:4978:20e::1]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1QeAaQ-0001j1-MG; Tue, 05 Jul 2011 18:43:07 +0000 Received: from localhost ([127.0.0.1] helo=canuck.infradead.org) by canuck.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1QeAaQ-0008Rh-AL; Tue, 05 Jul 2011 18:43:06 +0000 Received: from [2002:4e20:1eda::1] (helo=caramon.arm.linux.org.uk) by canuck.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1QeAaL-0008RJ-Vb for linux-arm-kernel@lists.infradead.org; Tue, 05 Jul 2011 18:43:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=arm.linux.org.uk; s=caramon; h=Sender:Content-Type:MIME-Version:Message-ID:Subject:To:From:Date; bh=RrBCLqhK3tl2hiucaGGBAsQg6oMqPKDuviX0Xe0O2Ig=; b=aEIdNJ1S19uKP0fCoST0OO8uPaaZJMJ0SV6yLg5dfTQT32IwnbgZS8Ei51FfkfvhS4lBK1AJcviiznCptDWNkZEwORelTedaby9AW0ZJBXrtxTIVFYKaz+Pbcngubc9QOU4DfDqPtJNrKj8l8JWRIyN+ePdDy0lftuLrUP4jfkI=; Received: from n2100.arm.linux.org.uk ([2002:4e20:1eda:1:214:fdff:fe10:4f86]) by caramon.arm.linux.org.uk with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1QeAaG-0003hc-G0 for linux-arm-kernel@lists.infradead.org; Tue, 05 Jul 2011 19:42:56 +0100 Received: from linux by n2100.arm.linux.org.uk with local (Exim 4.72) (envelope-from ) id 1QeAaF-00022Y-7Z for linux-arm-kernel@lists.infradead.org; Tue, 05 Jul 2011 19:42:55 +0100 Date: Tue, 5 Jul 2011 19:42:54 +0100 From: Russell King - ARM Linux To: linux-arm-kernel@lists.infradead.org Subject: [PATCH] ARM: poison initmem when it is freed Message-ID: <20110705184254.GH8286@n2100.arm.linux.org.uk> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.19 (2009-01-05) X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20110705_144303_132023_FD191D54 X-CRM114-Status: GOOD ( 14.55 ) X-Spam-Score: 1.2 (+) X-Spam-Report: SpamAssassin version 3.3.1 on canuck.infradead.org summary: Content analysis details: (1.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 1.3 RDNS_NONE Delivered to internal network by a host with no rDNS 0.0 TO_NO_BRKTS_NORDNS To: misformatted and no rDNS X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Tue, 05 Jul 2011 18:43:45 +0000 (UTC) When the initmem is freed, we can no longer rely on its contents. In lightly loaded systems, this memory may persist for some time, making it harder discover run-time issues (caused by the build warnings being ignored.) Poison the initmem at the point where it is freed to encourage run-time problems when initmem is dereferenced as an aid to finding such problems. Signed-off-by: Russell King --- arch/arm/mm/init.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 2c2cce9..46c39bd 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -701,6 +702,8 @@ void free_initmem(void) "TCM link"); #endif + memset(__init_begin, POISON_FREE_INITMEM, __init_end - __init_begin); + if (!machine_is_integrator() && !machine_is_cintegrator()) totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)), __phys_to_pfn(__pa(__init_end)),