From patchwork Tue Jul 9 23:01:48 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Shilong X-Patchwork-Id: 2825467 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 351D59F756 for ; Tue, 9 Jul 2013 23:02:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 54CA620103 for ; Tue, 9 Jul 2013 23:02:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2AAB6200FF for ; Tue, 9 Jul 2013 23:01:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752906Ab3GIXBz (ORCPT ); Tue, 9 Jul 2013 19:01:55 -0400 Received: from mail-pa0-f41.google.com ([209.85.220.41]:45504 "EHLO mail-pa0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752509Ab3GIXBz (ORCPT ); Tue, 9 Jul 2013 19:01:55 -0400 Received: by mail-pa0-f41.google.com with SMTP id bj3so6096529pad.28 for ; Tue, 09 Jul 2013 16:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id:x-mailer; bh=l9wejvikmTVJeXB7+cqsExxztY+QdTbAPLDYnhIT4zw=; b=MjmpjRdullTbp2XyXS10J10aglVcBkyOHZj9FGXEALLrDTXDcC+/2z6fSnUcQRAR55 OzKItFlwMzbeXxsYQuBdPUhtAp8D7U/l5Gqg1/gmLjfpr8xcntkEJtRY7rFFHMjb9mUF 6QAO7oIFK3nBNUTB2AYAMik7caNIa2XAcZBH0e92bQEiArlrajRP8IW4jR70dVS7phQe VLb6KBxiKhUwFRGIqyC5Z8dtxZ6Y6F8WViF7iCwx4VUddN2K5ga49pzBcQ1iixPzhHgV e6DxxJ5tLAqpPRH+ZdUeJ6Tagyx/ro7bdPiRtEjEv3Mf8mgarBtsYOBk6NxHd51Sjwlc 6/1w== X-Received: by 10.69.13.132 with SMTP id ey4mr19122922pbd.52.1373410914636; Tue, 09 Jul 2013 16:01:54 -0700 (PDT) Received: from localhost.localdomain.localdomain ([223.65.188.212]) by mx.google.com with ESMTPSA id te9sm16309985pab.6.2013.07.09.16.01.52 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Tue, 09 Jul 2013 16:01:53 -0700 (PDT) From: Wang Shilong To: linux-btrfs@vger.kernel.org Subject: [PATCH] Btrfs-progs: fix memory leak in open_file_or_dir() Date: Wed, 10 Jul 2013 07:01:48 +0800 Message-Id: <1373410908-2274-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.7.11.7 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Wang Shilong After calling opendir() successfully, closedir() should be also called to free memory. Otherwise, memory leak happens. Signed-off-by: Wang Shilong Reviewed-by: Anand Jain --- utils.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils.c b/utils.c index 7b4cd74..0afff55 100644 --- a/utils.c +++ b/utils.c @@ -1480,7 +1480,7 @@ int open_file_or_dir(const char *fname) { int ret; struct stat st; - DIR *dirstream; + DIR *dirstream = NULL; int fd; ret = stat(fname, &st); @@ -1496,9 +1496,10 @@ int open_file_or_dir(const char *fname) } else { fd = open(fname, O_RDWR); } - if (fd < 0) { - return -3; - } + if (fd < 0) + fd = -3; + if (dirstream) + closedir(dirstream); return fd; }