From patchwork Thu Feb 4 08:46:56 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zheng" X-Patchwork-Id: 76925 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o148lPOF016925 for ; Thu, 4 Feb 2010 08:47:25 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755918Ab0BDIrY (ORCPT ); Thu, 4 Feb 2010 03:47:24 -0500 Received: from rcsinet12.oracle.com ([148.87.113.124]:33973 "EHLO rcsinet12.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755081Ab0BDIrX (ORCPT ); Thu, 4 Feb 2010 03:47:23 -0500 Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet12.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o148lLVd004126 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 4 Feb 2010 08:47:22 GMT Received: from acsmt354.oracle.com (acsmt354.oracle.com [141.146.40.154]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o146bxoe030679 for ; Thu, 4 Feb 2010 08:47:20 GMT Received: from abhmt005.oracle.com by acsmt353.oracle.com with ESMTP id 10554361265273223; Thu, 04 Feb 2010 00:47:03 -0800 Received: from [10.182.121.20] (/10.182.121.20) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 04 Feb 2010 00:47:02 -0800 Message-ID: <4B6A8980.206@oracle.com> Date: Thu, 04 Feb 2010 16:46:56 +0800 From: "Yan, Zheng" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.7) Gecko/20100120 Fedora/3.0.1-1.fc12 Thunderbird/3.0.1 MIME-Version: 1.0 To: linux-btrfs@vger.kernel.org, chris Mason Subject: [PATCH] btrfs: fix race between allocate and release extent buffer. X-Source-IP: acsmt354.oracle.com [141.146.40.154] X-Auth-Type: Internal IP X-CT-RefId: str=0001.0A090208.4B6A8998.0214:SCFMA4539814,ss=1,fgs=0 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Thu, 04 Feb 2010 08:47:25 +0000 (UTC) diff -urp 1/fs/btrfs/extent_io.c 2/fs/btrfs/extent_io.c --- 1/fs/btrfs/extent_io.c 2010-01-17 15:48:16.770302026 +0800 +++ 2/fs/btrfs/extent_io.c 2010-02-04 16:37:45.704800682 +0800 @@ -3165,10 +3165,9 @@ struct extent_buffer *alloc_extent_buffe spin_unlock(&tree->buffer_lock); goto free_eb; } - spin_unlock(&tree->buffer_lock); - /* add one reference for the tree */ atomic_inc(&eb->refs); + spin_unlock(&tree->buffer_lock); return eb; free_eb: