Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp5276308imd; Tue, 30 Oct 2018 14:58:27 -0700 (PDT) X-Google-Smtp-Source: AJdET5fBFyR+Ie8Ehi2VeZ9rjeAgDgH94q7Dqediyqz3PLxVr/fRsrTEe9AvXqlI2Z2yVkvT1xYt X-Received: by 2002:a62:5d49:: with SMTP id r70-v6mr463565pfb.123.1540936707561; Tue, 30 Oct 2018 14:58:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540936707; cv=none; d=google.com; s=arc-20160816; b=rl8r3K0P7HiwK4OyqbF33wVrIBTM/tEIHoGEbvZxHVq3Ohqj+1f0HEWcQwBJEDHmlT UlkKuJEz3dBQeStK4P5h2LHP2WK48a4wsb++Mbh012Lz4fiDTmAE6JLuO7aumKun7WFQ 3cK14GLsnWL8Wjrt+HB32dzQad+CEBkqSOMZnmDNdIADTGkvwt7EnwXLzYICOywP7moR C9k/X+sHSCduTcMCXMeSU1Ey/kkAL8dkkd6l1nwVr8j1X6+1FMPNLloEbYXTcNYA6aNM MeoTu9/bmUw0+kqHtvDDF4mCaiCEMA4rhGUoo28neUzzw7LdkLHAr081rsrbBKklmyJ4 pePQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:subject:from; bh=g27ZiPrD+sMRXpzk1gnLoVLWJvGZ3rGhyy9GusdrniI=; b=foAuzxEMl0gYXVnhahswQqomNiSJDUMG7HNJlN5TJrbnHySp69FiDJs9dFBcO6m5O/ kQmmTKo+iAIYuT3ze2tWYkFZQ7oy0FLw67EnNGWxfzQ0KfTawIZepA24J6Fevr5YO2nR McJq1q+PPaHSAgJC+mrAvaG+3YiPqKfP8VTfw3AKLJYOLIdeyvgfAFzOo0twec+wygeV Dri4VI813RniA7wBetvQx9PovURMsUVbuOIwo6MKPrRTIqdbjYSBlyyfSe8UQd2Szfw/ X6vNN4UJjhJLzvdFtIS1VA/tTEvRFX8Xlo9zxJjqfaE5k8eonTx6MsBaGDO8cZYFD380 bAUA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g13-v6si9339509pfh.229.2018.10.30.14.58.12; Tue, 30 Oct 2018 14:58:27 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728164AbeJaGw5 (ORCPT + 99 others); Wed, 31 Oct 2018 02:52:57 -0400 Received: from relay.sw.ru ([185.231.240.75]:45938 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725743AbeJaGw5 (ORCPT ); Wed, 31 Oct 2018 02:52:57 -0400 Received: from [172.16.24.21] by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1gHc14-0003gG-Mh; Wed, 31 Oct 2018 00:57:38 +0300 From: Vasily Averin Subject: [PATCH v2 01/11] ext4 resise: extra brelse in setup_new_flex_group_blocks() To: linux-ext4@vger.kernel.org, Theodore Ts'o Cc: Andreas Dilger , linux-kernel@vger.kernel.org, Yongqiang Yang , Yongqiang Yang References: Message-ID: <37de5906-2d76-461a-ff92-b6fcc775b408@virtuozzo.com> Date: Wed, 31 Oct 2018 00:57:37 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org currently bh is set to NULL only during first iteration of for cycle, then this pointer is not cleared after end of using. Therefore rollback after errors can lead to extra brelse(bh) call, decrements bh counter and later trigger an unexpected warning in __brelse() Patch moves brelse() calls in body of cycle to exclude requirement of brelse() call in rollback. Fixes 33afdcc5402d ("ext4: add a function which sets up group blocks ...") # 3.3+ Signed-off-by: Vasily Averin --- fs/ext4/resize.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index ebbc663d0798..c3fa30878ca8 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -605,7 +605,6 @@ static int setup_new_flex_group_blocks(struct super_block *sb, bh = bclean(handle, sb, block); if (IS_ERR(bh)) { err = PTR_ERR(bh); - bh = NULL; goto out; } overhead = ext4_group_overhead_blocks(sb, group); @@ -618,9 +617,9 @@ static int setup_new_flex_group_blocks(struct super_block *sb, ext4_mark_bitmap_end(EXT4_B2C(sbi, group_data[i].blocks_count), sb->s_blocksize * 8, bh->b_data); err = ext4_handle_dirty_metadata(handle, NULL, bh); + brelse(bh); if (err) goto out; - brelse(bh); handle_ib: if (bg_flags[i] & EXT4_BG_INODE_UNINIT) @@ -635,18 +634,16 @@ static int setup_new_flex_group_blocks(struct super_block *sb, bh = bclean(handle, sb, block); if (IS_ERR(bh)) { err = PTR_ERR(bh); - bh = NULL; goto out; } ext4_mark_bitmap_end(EXT4_INODES_PER_GROUP(sb), sb->s_blocksize * 8, bh->b_data); err = ext4_handle_dirty_metadata(handle, NULL, bh); + brelse(bh); if (err) goto out; - brelse(bh); } - bh = NULL; /* Mark group tables in block bitmap */ for (j = 0; j < GROUP_TABLE_COUNT; j++) { @@ -685,7 +682,6 @@ static int setup_new_flex_group_blocks(struct super_block *sb, } out: - brelse(bh); err2 = ext4_journal_stop(handle); if (err2 && !err) err = err2; -- 2.17.1