Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp639542img; Fri, 22 Mar 2019 05:42:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqz0P/ogcctdEopzzqkN2l1DzpY2+trklFjB1pQz8STFhQ1e+0/8c5ArFzo1nAqEAKMiTNfn X-Received: by 2002:a62:1881:: with SMTP id 123mr8929552pfy.25.1553258540405; Fri, 22 Mar 2019 05:42:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553258540; cv=none; d=google.com; s=arc-20160816; b=eVlL+ZYE/5erIFApRSR5EZ0insvDdh6xkczz2Y92CJ+FRlR+AhxxZxPQIZQ2FBb/PF EiN8MOrFYkqi0UM61Zlcr0OSnMkldBLKo0YvU3ZzGFk+oWmFfI5EwL9d7dU6pGyvXWRw r3ZL6ibD3NiEaW6c1LdhxKBFWQFaNsPEHEYHmvYZE2J8Erm6EjYPqKimjI39bOaZ77NU I8eCDiAhRjuIFik6GWU7zxroCc/BJgehKOa+sg67asWJKR6BCsIAjypYEdTe5ug7e+Ro uURzhjGCUpxSpqgPCgm+NZC+sEJGn9+VQjMd1IT2i26xA6zO1lZazRRS5ttzere3X9dI i0YA== 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=4M19/3cPVT3g23mq9h+D8CCL1E0alDQ8bNnxGedrjcI=; b=SBZeFa3paRbtLfZPTA8yodFuYR0swDJ7zbJbI45hOReMur8Ae+SGQh0LlsXJlsHyek 6PvQxQdIZGKKfNwNaLdwHA5k2WDwRoZIeQ1FxAw7RxTw1AeuyJopUKCcfLZPejw1uH5U YTVlwJ8bEDykHQGIk3YxDes6e7UV95nKw+C47m+dc9HX4XbmhA4r4LubFnh2R5LNeu0s YvcnGcz9yXy/FDos9JP3KlMh/kaLi/iUDACdyHgd6cFivsiXuAxuOr4OV/Gj840XhEUy m3+EjR1/SLwrlQYJbnJoZ5QYjTYEDzDpR4qepUfwEgamOGesIwETz8wtYfLnU8xe1rlv K8nA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=WEz33a+E; 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 t2si6735217plr.179.2019.03.22.05.42.02; Fri, 22 Mar 2019 05:42:20 -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=WEz33a+E; 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 S2388684AbfCVMlL (ORCPT + 99 others); Fri, 22 Mar 2019 08:41:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:44356 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388743AbfCVMFu (ORCPT ); Fri, 22 Mar 2019 08:05:50 -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 A4425206C0; Fri, 22 Mar 2019 12:05:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553256350; bh=iDR1ryXya401T/l7BdXu4RycfpAv+Y+r4w6xp6il0uU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WEz33a+EpqSzYSECZUaL7x2ySH9SRYJzOyZHUGUFSpd6Ot/9JR0oirJAJb9mPe7GE VPrO+i9y1Gn0lCRdOTS5x/B/UjcYpstc7lJtbVwfr3x0HxqBkOe9OjU8JZ0ik2ZUKP w7SK285psnbHH4C9elc4zhk8v+i7/U7Xa2kPHCgk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, yangerkun , Theodore Tso Subject: [PATCH 4.19 183/280] ext4: add mask of ext4 flags to swap Date: Fri, 22 Mar 2019 12:15:36 +0100 Message-Id: <20190322111327.161442780@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190322111306.356185024@linuxfoundation.org> References: <20190322111306.356185024@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.19-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 @@ -435,6 +435,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 @@ -63,6 +63,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); @@ -72,7 +73,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);