Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3000769imu; Sun, 9 Dec 2018 14:46:32 -0800 (PST) X-Google-Smtp-Source: AFSGD/VCgCqnKLENAM6KWYP3OLy0w+++gm4aU3GbhjFBGb9sIQRXORC1AH213/HEB3sCrptmCwAE X-Received: by 2002:a65:64c8:: with SMTP id t8mr8786249pgv.31.1544395592736; Sun, 09 Dec 2018 14:46:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544395592; cv=none; d=google.com; s=arc-20160816; b=Rn3xliaX4X6V+FPS132iAPpl+Lf2zp/kSWefY0EsXXLCOirnWRtpwNBe2oFcSa+Cbm U+f+fSpnWa2XSwwPTdrs1nd+k893tto2D4RfXgT2bp/8/kmbDW8T7aQ+lQ0dTaJwofpy vQNAMpRfmMxuwAgA30dZbMMlPdX9JalBMaWEzgIriN/0iznD1LzHzbjqJQGi3ELSW6tF Un6keZpxptHpUnf1hBY4OIdl76ZxKzP4b21b/k0uQ6NM0eRWt/78QecuWFi92HMIzLCn ox59K9rPsPOcU3EvCwxYPXYsgf501kR/TeWtGZaAUgxwUWQlFfHGCahgR43+COILtX52 8wmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=ze0Gw/JiDzqFCkHD0SHyTgZ7dW3enE1Q+aB2tLovAm4=; b=d+kCKEZJSskrZwscIPFJWgDSDHd4IvPaiOuc9CzwBVlOt4R4rwJV6e9TzsB/1pjS6W l7gfAv54mOGpfcAFFcQRdqRQUtwuJKYomNbCajckE25Lb76bwR9NePod1GFXXib0SVA+ 3+Nef4Uk+41QVfmeAsleHDsKIkFum6/9tShbU8aSjJQrkZNq82XIPXwTKxtlWkS2hqCA o8GMiQJudxrEpDOmGUkpfffsRTMAJ8ZCq/K39rhvOXcEdymGalC7GTRzRph41OrG5Lq9 GK3eZ41So+9dG7Ueghb7wwdnavpmFkdAMmbMCwCLkP/C64g+Q02MzXOyFR96km1o5UXi Kwfw== 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 a19si7878686pgj.429.2018.12.09.14.46.17; Sun, 09 Dec 2018 14:46:32 -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 S1726816AbeLIVzn (ORCPT + 99 others); Sun, 9 Dec 2018 16:55:43 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:35566 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726576AbeLIVz1 (ORCPT ); Sun, 9 Dec 2018 16:55:27 -0500 Received: from pub.yeoldevic.com ([81.174.156.145] helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gW72q-0002ib-Cp; Sun, 09 Dec 2018 21:55:24 +0000 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1gW72m-0003hr-0m; Sun, 09 Dec 2018 21:55:20 +0000 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, kanda.motohiro@gmail.com, "Darrick J. Wong" , "Dave Chinner" , "Christoph Hellwig" Date: Sun, 09 Dec 2018 21:50:33 +0000 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 327/328] xfs: don't fail when converting shortform attr to long form during ATTR_REPLACE In-Reply-To: X-SA-Exim-Connect-IP: 81.174.156.145 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.62-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: "Darrick J. Wong" commit 7b38460dc8e4eafba06c78f8e37099d3b34d473c upstream. Kanda Motohiro reported that expanding a tiny xattr into a large xattr fails on XFS because we remove the tiny xattr from a shortform fork and then try to re-add it after converting the fork to extents format having not removed the ATTR_REPLACE flag. This fails because the attr is no longer present, causing a fs shutdown. This is derived from the patch in his bug report, but we really shouldn't ignore a nonzero retval from the remove call. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199119 Reported-by: kanda.motohiro@gmail.com Reviewed-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Darrick J. Wong [bwh: Backported to 3.16: adjust filename] Signed-off-by: Ben Hutchings --- fs/xfs/xfs_attr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c @@ -540,7 +540,14 @@ xfs_attr_shortform_addname(xfs_da_args_t if (args->flags & ATTR_CREATE) return(retval); retval = xfs_attr_shortform_remove(args); - ASSERT(retval == 0); + if (retval) + return retval; + /* + * Since we have removed the old attr, clear ATTR_REPLACE so + * that the leaf format add routine won't trip over the attr + * not being around. + */ + args->flags &= ~ATTR_REPLACE; } if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||