Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp648789img; Fri, 22 Mar 2019 05:54:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqxO1QqYomHNzbAREopqEKm0u9AJNEuCansV/4eF2UKIuIbcAkSWP1x9p5sFirPRuHJ8ycNe X-Received: by 2002:a62:6c43:: with SMTP id h64mr9061975pfc.123.1553259294816; Fri, 22 Mar 2019 05:54:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553259294; cv=none; d=google.com; s=arc-20160816; b=sxa3vdVjuT2VGEiqgVZ22SBkaZropm5Ykn1Qbty2wBHYCzhk73UzorTNQtnmnJf9Ap AmghI9oPz+Ho6SWw0/CToFqVf+hAkDuaKr9c4vM/AL3yFa166lyEjspMcjv3vLaT9j5z 7O09aMHtfxNumHpiTNaUsPc8IzX/qzgIr+iM7JSwinvr5K3B75oIpvdPs6x3KQXZEHux NtrJBqZvE5ojZhJzU/Qdf7LpZZkKICIUjAdXgQUBshbT6JBJ4/X/vwpgect2C8kURLgn aVGyR+cilcDXnuPL0AZ+nGN44z7uiI7c+Z2qhJAEFKq+HpezfakYoUxOnC0n+XqcU0/T Em5A== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=6JFJ1rN/vTdU/VXERC4iVpub6mxtvFwzYKSRiZ0JDyc=; b=afKucarH40PEYFd+XtJjjLbnQhX++1LEx+HnEYPzS7gwEd+hVshkpL+yHaf83lb8+P oClwdPyY9WUtl+YhGlMxt4LSAaJg4KKe3Oqdnu+sfqpXI9dXfw/aQuSqDk8Kn8UoOS1K Xohx1QrZcoy2TGyoDFuEuVmpxroxQb9RDkDGaw+iZxXGjNDJo2Qbnf4gAD2M5r6fex5V tMYHg7hOYmJGW3GbscIGEgourtVjiK3uj1JFIO1qoy7RdinbVDVSlGfAH2wfM585dNRW YViWtt3dOdZg7RSjzNqq79MBiJ65BWzu9ayYTgAOjmOIAKR6C2/xgmiKg8gbS7McorJI nvDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=K5CvYqFz; 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 n19si6118923pgj.426.2019.03.22.05.54.39; Fri, 22 Mar 2019 05:54:54 -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; dkim=pass header.i=@kernel.org header.s=default header.b=K5CvYqFz; 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 S1732809AbfCVLvo (ORCPT + 99 others); Fri, 22 Mar 2019 07:51:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:55618 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732154AbfCVLvm (ORCPT ); Fri, 22 Mar 2019 07:51:42 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CDFCE2082C; Fri, 22 Mar 2019 11:51:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553255502; bh=MtFPnkSjP+s6nr1+iKJNNuGP/h4iL7+NPmL1pWc6OUo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K5CvYqFz27pqsZxq1YJpFYDQjhbxejJ16OEC6NFtxfHoIwjo15LqyBqaTOui4ABxT lVcsBzix+XXyrYMjaXXGUWUBpp51QP3I2JNzfgMu6BBke2eQpouIoy5wNyhyzm6UmQ p+KvsNMW/wU+YeF53VpapZtu6Xg+ziZUjXFGQzko= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, yangerkun , Theodore Tso Subject: [PATCH 4.14 111/183] ext4: add mask of ext4 flags to swap Date: Fri, 22 Mar 2019 12:15:39 +0100 Message-Id: <20190322111249.750294783@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190322111241.819468003@linuxfoundation.org> References: <20190322111241.819468003@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: yangerkun commit abdc644e8cbac2e9b19763680e5a7cf9bab2bee7 upstream. The reason is that while swapping two inode, we swap the flags too. Some flags such as EXT4_JOURNAL_DATA_FL can really confuse the things since we're not resetting the address operations structure. The simplest way to keep things sane is to restrict the flags that can be swapped. Signed-off-by: yangerkun Signed-off-by: Theodore Ts'o Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- fs/ext4/ext4.h | 3 +++ fs/ext4/ioctl.c | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -426,6 +426,9 @@ struct flex_groups { /* Flags that are appropriate for non-directories/regular files. */ #define EXT4_OTHER_FLMASK (EXT4_NODUMP_FL | EXT4_NOATIME_FL) +/* The only flags that should be swapped */ +#define EXT4_FL_SHOULD_SWAP (EXT4_HUGE_FILE_FL | EXT4_EXTENTS_FL) + /* Mask out flags that are inappropriate for the given type of inode. */ static inline __u32 ext4_mask_flags(umode_t mode, __u32 flags) { --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -61,6 +61,7 @@ static void swap_inode_data(struct inode loff_t isize; struct ext4_inode_info *ei1; struct ext4_inode_info *ei2; + unsigned long tmp; ei1 = EXT4_I(inode1); ei2 = EXT4_I(inode2); @@ -73,7 +74,10 @@ static void swap_inode_data(struct inode swap(inode1->i_mtime, inode2->i_mtime); memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data)); - swap(ei1->i_flags, ei2->i_flags); + tmp = ei1->i_flags & EXT4_FL_SHOULD_SWAP; + ei1->i_flags = (ei2->i_flags & EXT4_FL_SHOULD_SWAP) | + (ei1->i_flags & ~EXT4_FL_SHOULD_SWAP); + ei2->i_flags = tmp | (ei2->i_flags & ~EXT4_FL_SHOULD_SWAP); swap(ei1->i_disksize, ei2->i_disksize); ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS); ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS);