Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754912AbZKVMSX (ORCPT ); Sun, 22 Nov 2009 07:18:23 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754888AbZKVMSV (ORCPT ); Sun, 22 Nov 2009 07:18:21 -0500 Received: from mail-px0-f204.google.com ([209.85.216.204]:57240 "EHLO mail-px0-f204.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754574AbZKVMSS (ORCPT ); Sun, 22 Nov 2009 07:18:18 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :mime-version:content-type:content-transfer-encoding; b=R7fZkKiK6GXVFPR8InpDf1rat03pDhBTD0GmKRZdLt63ORxnJPUlSZRvIaxyMTnXiX DC5n8+rQVfnlrOcK24kUZsLPiUVeZWvmfiFelLty1aLDuTGVd3vuoWMQuYl3z2dyhaoJ eRHoYU2EHWUjoMYd8dIk+89tdTBVmu/cRHjK4= From: =?UTF-8?q?Andr=C3=A9=20Goddard=20Rosa?= To: Andrew Morton , linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Andr=C3=A9=20Goddard=20Rosa?= , Pekka Enberg Subject: [PATCH 1/2] pid: tighten pidmap spinlock critical section by removing kfree() Date: Sat, 21 Nov 2009 10:16:19 -0200 Message-Id: <0e91f1c4ecc5bc5000f729ccb56e9b6e1fbd4bd3.1258805412.git.andre.goddard@gmail.com> X-Mailer: git-send-email 1.6.5.3.298.g39add In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1099 Lines: 39 Avoid calling kfree() under pidmap spinlock, calling it afterwards. Normally kfree() is very fast, but sometimes it can be slow, so avoid calling it under the spinlock if we can. Signed-off-by: André Goddard Rosa cc: Pekka Enberg --- kernel/pid.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/pid.c b/kernel/pid.c index d3f722d..55fd590 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -141,11 +141,12 @@ static int alloc_pidmap(struct pid_namespace *pid_ns) * installing it: */ spin_lock_irq(&pidmap_lock); - if (map->page) - kfree(page); - else + if (!map->page) { map->page = page; + page = NULL; + } spin_unlock_irq(&pidmap_lock); + kfree(page); if (unlikely(!map->page)) break; } -- 1.6.5.3.298.g39add -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/