From patchwork Thu Oct 25 02:59:20 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Sheng-Hui X-Patchwork-Id: 1641491 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id A136BDFABE for ; Thu, 25 Oct 2012 02:59:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756233Ab2JYC7c (ORCPT ); Wed, 24 Oct 2012 22:59:32 -0400 Received: from mail-ie0-f174.google.com ([209.85.223.174]:52296 "EHLO mail-ie0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755791Ab2JYC7b (ORCPT ); Wed, 24 Oct 2012 22:59:31 -0400 Received: by mail-ie0-f174.google.com with SMTP id k13so1670748iea.19 for ; Wed, 24 Oct 2012 19:59:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=safyFbyLePXO4Pt+n0HHzSZnvSilV4xhammz0UbUVC8=; b=XWEuhe6OW+AR6zaqFoddSBh+0mEQU3a/GBmjYjMFohu7MklrGiUpJDjiegxbpkuzyN UVRPUaAYhTF/Nwbzgq008cUYdDd7lp5fI3/GOU8rO6gzREpGlKNPx3JvK8oLsjVPnnqr HVUkuaNpZgqAvVXJ3h59QjR8v1KHj10F0ROZZzyFVmVdqMuX8h2UaVrPKPaHjouEmoXO CHviEHLOW1eOjbaZlJvFGYnDJ1OauDVjST/Tx4xia/8UBBrFDl1kSpVY4QGizj89X4VU kl7gIqYt8yHnSAaHZKSLE35HBDMgkyeBt/9p+721DwVGWrDUb3hESW2O5mTHC+CjPh4y lKUA== Received: by 10.50.152.194 with SMTP id va2mr4669679igb.25.1351133970728; Wed, 24 Oct 2012 19:59:30 -0700 (PDT) Received: from crossover.org ([202.108.130.138]) by mx.google.com with ESMTPS id s20sm3630106igs.10.2012.10.24.19.59.28 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 24 Oct 2012 19:59:29 -0700 (PDT) Message-ID: <5088AB08.9080902@gmail.com> Date: Thu, 25 Oct 2012 10:59:20 +0800 From: Wang Sheng-Hui User-Agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: linux-btrfs@vger.kernel.org Subject: [PATCH] btrfs-progs: avoid memory leak in find_and_setup_log_root Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org In find_and_setup_log_root, the malloced log_root would be leaked if we have bytenr = 0, which would happen at our mkfs stage. Move the memory allocation after the bytenr check, and add allocation failure check. Signed-off-by: Wang Sheng-Hui --- disk-io.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/disk-io.c b/disk-io.c index 0395205..3a80284 100644 --- a/disk-io.c +++ b/disk-io.c @@ -456,11 +456,15 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root, { u32 blocksize; u64 blocknr = btrfs_super_log_root(disk_super); - struct btrfs_root *log_root = malloc(sizeof(struct btrfs_root)); + struct btrfs_root *log_root = NULL; if (blocknr == 0) return 0; + log_root = malloc(sizeof(struct btrfs_root)); + if (!log_root) + return -ENOMEM; + blocksize = btrfs_level_size(tree_root, btrfs_super_log_root_level(disk_super));