Received: by 10.223.185.116 with SMTP id b49csp2345883wrg; Thu, 15 Feb 2018 10:09:27 -0800 (PST) X-Google-Smtp-Source: AH8x226azm4gBCaCzizkx9l3vcXVKWmrrtn8x35VcOoMopKXGnkyemAfdtg+XMJswWx2i5jxKt4A X-Received: by 10.99.149.8 with SMTP id p8mr2798034pgd.186.1518718167597; Thu, 15 Feb 2018 10:09:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518718167; cv=none; d=google.com; s=arc-20160816; b=X0nlNQXoUd3Gt7h211ctO6hlvrv1LX1yphnZgVFbhS6K3UzS6fXZAV2GOaQofF8YVL qXCuFTkdJYowfM6mzsCB4HMl4QjqhWB0FjAZCAa4ncbNQnFjQUZBkBxCsfK7iUmo/ZQv Qe0NH03/euB31HnUW4Ia2lxFTwj9aDnBWSj30nDhEPB9Zu9PdyrxgzuFgKbIpn+eO6vF NG1i3t/xaGM+2H0RDbKIzOL+TrAZvcOGVOY5DZmDSZn7L034Sd9xVmLKgmbFR3uD42Zt x2KdI5FTH/XzH8eiZZpBPANOJHSYw5zVVy+8ueec+gwCzXwyvKcBNFCv3ek6cCY1rS1K NHlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=FxSUjAGk7yyxyypAgZRdTiriMSwIZJRvpz9wDXLv4Bc=; b=Bxp+0ozTDGIh4TFd6TzO3uhiPiDeadZLFbXDehWTxMnbN/TyURr2UZhc0Ez63VoR6M I3tcpgZD5soz4/isYxtDjB+A78JmDku9nPp2HmuE2kDmsrPTvaDn+m8sCoJ11/ZamYhp yR944isFQmpb4iTfy+40VmGM2jvv/x6dvw9BSby+0Z8zl4inR+s29U/sT/aIgoTRsXDg K1H16akK0eH73CCrUiE5hSAHMjWp2R3xtsnED7bKP8K1FzyEvgHgDpRMiZMM2OssLjPv 23Vw0SAJEDrm2sslsFw5srUMDxQymolNETsm4i/iKZcz7zuxL0VdOHCUCOYOYVquXGXC 4WiA== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y92-v6si288407plb.137.2018.02.15.10.09.12; Thu, 15 Feb 2018 10:09:27 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1163984AbeBOP3M (ORCPT + 99 others); Thu, 15 Feb 2018 10:29:12 -0500 Received: from mail.linuxfoundation.org ([140.211.169.12]:54304 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1163973AbeBOP3J (ORCPT ); Thu, 15 Feb 2018 10:29:09 -0500 Received: from localhost (LFbn-1-12258-90.w90-92.abo.wanadoo.fr [90.92.71.90]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 0595510A2; Thu, 15 Feb 2018 15:29:08 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nikolay Borisov , Qu Wenruo , David Sterba Subject: [PATCH 4.9 82/88] btrfs: Handle btrfs_set_extent_delalloc failure in fixup worker Date: Thu, 15 Feb 2018 16:17:49 +0100 Message-Id: <20180215151233.825344562@linuxfoundation.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215151222.437136975@linuxfoundation.org> References: <20180215151222.437136975@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Nikolay Borisov commit f3038ee3a3f1017a1cbe9907e31fa12d366c5dcb upstream. This function was introduced by 247e743cbe6e ("Btrfs: Use async helpers to deal with pages that have been improperly dirtied") and it didn't do any error handling then. This function might very well fail in ENOMEM situation, yet it's not handled, this could lead to inconsistent state. So let's handle the failure by setting the mapping error bit. Signed-off-by: Nikolay Borisov Reviewed-by: Qu Wenruo Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/inode.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -2063,8 +2063,15 @@ again: goto out; } - btrfs_set_extent_delalloc(inode, page_start, page_end, &cached_state, - 0); + ret = btrfs_set_extent_delalloc(inode, page_start, page_end, + &cached_state, 0); + if (ret) { + mapping_set_error(page->mapping, ret); + end_extent_writepage(page, ret, page_start, page_end); + ClearPageChecked(page); + goto out; + } + ClearPageChecked(page); set_page_dirty(page); out: