Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp216345ybi; Fri, 26 Jul 2019 08:36:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqyKZK5f9pm/IjfEwjWObRBWlaHhXe5IeulAbnJOPu3rI+onEabYSE96Hs9WGsuNPYOm5agt X-Received: by 2002:a17:902:24b:: with SMTP id 69mr92790009plc.250.1564155386615; Fri, 26 Jul 2019 08:36:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564155386; cv=none; d=google.com; s=arc-20160816; b=iRF9PWWc23hO/ef9NXhstG1aBR+j2RF5aw75w513jDheJm+vsHWKsLAx7GPgYtwuDK CsCgIbAexV3ELTkThljnNCnXRM/no9O99/2/KnEMiYISLLrsrVzpjPBHrano40Nn+ZB5 4bOO7benL0vOYA91vuSiII5Wlc+zLytqwWx8LrBWh1ATEuH8BR18kp+v98UkHXH2g/E7 tzT+smvWMSvLEhGhTMtblX7zUjMVEBwksiwdpvhkRE975f6ATbEkAZT0tySHx4hJIJ3M 58MMidBsfWPYsyXsDq2+tp9QexKwkFBma7eJhMr/Z83e4wRGvJ22HbKwNBXs3tK0ESNa voJg== 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=ad2MTN19LSY5mdujIjVw4EdblAMKt53n2ugiTW2E/ok=; b=iRnlVz6EJ4oXydzPEn0rmLS7VbALHViwvO6B6R8/CswwTc+gwPWp7X/rbsABf0LfA4 XfwlxD7+EhPtJKDhdtHhubaN+Rio7gHriwBY6bfJxQFMuGmQXvNcKyuB0K6fhT+xMvA7 LZzhiyLMMjeiTVv6P0aifR6zEDU3C3ynLv75c++dy8UwAkggf5R9J9bQ9YCUATvehrQw AyL5o1L9ECBmESmnRasJqUMetruZk85bqpHHtHRUOKNWvBPiefNtPZaocCAsWOQIls3L rTsvbIaOVwIGWNdqLvXtWdtMSYACuWQGyY8OuqNZkO7Y785X1NA5apPxrHqKksWmXYSg 3yxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RNu72dga; 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 f26si21761014pfd.193.2019.07.26.08.36.11; Fri, 26 Jul 2019 08:36:26 -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=RNu72dga; 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 S2389697AbfGZPdn (ORCPT + 99 others); Fri, 26 Jul 2019 11:33:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:49130 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388496AbfGZPdk (ORCPT ); Fri, 26 Jul 2019 11:33:40 -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 57AC4205F4; Fri, 26 Jul 2019 15:33:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564155219; bh=taBCINhjsSyrUQtsJcV9YDjvgYO9fe4mXAzHX0ZQLMk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RNu72dgald7bRfV//Ky4FZDG/Oxh3IwvksLUSitIxUBUjoK+xopgxiJAVZR6Zo9db diJrtTkYfvuEFWP691u/XQbaVr1z2Reidh5lsc8KUB6yw1ku/Y1V1cMHuvzEZI1hXv gE4CN9SJhjrsykwqRY9JOld40mrKC/wZ5dqza7hA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Theodore Tso , "Darrick J. Wong" , stable@kernel.org Subject: [PATCH 4.19 43/50] ext4: enforce the immutable flag on open files Date: Fri, 26 Jul 2019 17:25:18 +0200 Message-Id: <20190726152305.162768329@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190726152300.760439618@linuxfoundation.org> References: <20190726152300.760439618@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Theodore Ts'o commit 02b016ca7f99229ae6227e7b2fc950c4e140d74a upstream. According to the chattr man page, "a file with the 'i' attribute cannot be modified..." Historically, this was only enforced when the file was opened, per the rest of the description, "... and the file can not be opened in write mode". There is general agreement that we should standardize all file systems to prevent modifications even for files that were opened at the time the immutable flag is set. Eventually, a change to enforce this at the VFS layer should be landing in mainline. Until then, enforce this at the ext4 level to prevent xfstests generic/553 from failing. Signed-off-by: Theodore Ts'o Cc: "Darrick J. Wong" Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman --- fs/ext4/file.c | 4 ++++ fs/ext4/inode.c | 11 +++++++++++ 2 files changed, 15 insertions(+) --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -165,6 +165,10 @@ static ssize_t ext4_write_checks(struct ret = generic_write_checks(iocb, from); if (ret <= 0) return ret; + + if (unlikely(IS_IMMUTABLE(inode))) + return -EPERM; + /* * If we have encountered a bitmap-format file, the size limit * is smaller than s_maxbytes, which is for extent-mapped files. --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -5491,6 +5491,14 @@ int ext4_setattr(struct dentry *dentry, if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) return -EIO; + if (unlikely(IS_IMMUTABLE(inode))) + return -EPERM; + + if (unlikely(IS_APPEND(inode) && + (ia_valid & (ATTR_MODE | ATTR_UID | + ATTR_GID | ATTR_TIMES_SET)))) + return -EPERM; + error = setattr_prepare(dentry, attr); if (error) return error; @@ -6190,6 +6198,9 @@ int ext4_page_mkwrite(struct vm_fault *v get_block_t *get_block; int retries = 0; + if (unlikely(IS_IMMUTABLE(inode))) + return VM_FAULT_SIGBUS; + sb_start_pagefault(inode->i_sb); file_update_time(vma->vm_file);