Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp577766ybz; Wed, 22 Apr 2020 04:05:06 -0700 (PDT) X-Google-Smtp-Source: APiQypI84mEAIRZ2HFk0MwBs+KyczK3hVFWWoRayen/D+TUWSeWUF//1gDL2dVzU7hVfGPIil8mv X-Received: by 2002:a17:906:b217:: with SMTP id p23mr24706417ejz.136.1587553506433; Wed, 22 Apr 2020 04:05:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587553506; cv=none; d=google.com; s=arc-20160816; b=Ph98PthxwKEbpR1Cr+rWKDr9IsU3cNtqoI/5WmzoLwfua9q8nAJB6+UBHTUboz+Yd/ UbKAVgBkTLMnMcYqSEck+578s9NBhnmIR799LZXe/od425S+D08v+GGWgOX/loDG/yIq WMWEmBRTro+DdJ7j0oaLj8pnxiV7w4ZgJAcW27xhnyEGg+sy/W/xDp+zR1BFYKOPbv8d DHcBoNEffqHn26JojR9pUJX2lK8VFPo0D4CLRuAXtiyL9UlBVWeehJw8GtmQDSki0pa1 JhYc/AcnebAYutGfY6Az1QbNzgq6du+IuewdsMd2xXUzY6i6rX5RGtvATBkVd8ps5tMh egOA== 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=eNFyNziwfGh6F6FCDdR7RW1dhGP9Ch3IOQ+1idowBrw=; b=iNJJcgPLE+rabOMYUA8F+XDd3VLQNDIBFkaEddDZxw49SN+5xRh6mv/qY8KsAx9dmn O2FuKrVJ6rxMwecqF7VJZ6LWDxBkYpujGrojr2qVYSIoF1dYKB0RK+7gcftscP21kNCY ycXrrjHSlRCuXarUwp0af7lzXsV/34C0B7PN+Vy2o3DrbS/GB256ruiEH9JEOA6zRahw rHbHIuRJcTEHCeqd/CE3cx8aiIwCkfhilSXU9o/0PtLBrBvJNQJ+Abhyh7jDMkXlomuv XW7KMfBrdaOEmsViAhjN2pN7M5bYlQAdZro4SfjWgyTbEhi+nweG5x9IR82KlhixpjWu F1FA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=a6QH5HAd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a23si3120609ejv.375.2020.04.22.04.04.42; Wed, 22 Apr 2020 04:05:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=a6QH5HAd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732392AbgDVLCi (ORCPT + 99 others); Wed, 22 Apr 2020 07:02:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:48008 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726643AbgDVKAi (ORCPT ); Wed, 22 Apr 2020 06:00:38 -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 490382077D; Wed, 22 Apr 2020 10:00:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587549633; bh=p711kW7+vtXYNGrEWOxxtf48YYYAKrkRBSY7gjVr1sc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a6QH5HAdFBCOCnQhgkgTwtB1o6cQoOWsPWgOH4FIhaRgnELdhSJ5LsPUxvzNqB368 oxk3iMRwbiOS1hc1pViYgn/AdQBAitRavZSmMiiapf7KkbGAXE/MNjt7Bt2cAtK3HM g3o0s8Lx+yvEYLlipxaAdrB7v2U1uZqcGJyqgfkA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Changwei Ge , Andrew Morton , Joseph Qi , Mark Fasheh , Joel Becker , Junxiao Bi , Changwei Ge , Gang He , Jun Piao , Linus Torvalds Subject: [PATCH 4.4 043/100] ocfs2: no need try to truncate file beyond i_size Date: Wed, 22 Apr 2020 11:56:13 +0200 Message-Id: <20200422095030.232440704@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200422095022.476101261@linuxfoundation.org> References: <20200422095022.476101261@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: Changwei Ge commit 783fda856e1034dee90a873f7654c418212d12d7 upstream. Linux fallocate(2) with FALLOC_FL_PUNCH_HOLE mode set, its offset can exceed the inode size. Ocfs2 now doesn't allow that offset beyond inode size. This restriction is not necessary and violates fallocate(2) semantics. If fallocate(2) offset is beyond inode size, just return success and do nothing further. Otherwise, ocfs2 will crash the kernel. kernel BUG at fs/ocfs2//alloc.c:7264! ocfs2_truncate_inline+0x20f/0x360 [ocfs2] ocfs2_remove_inode_range+0x23c/0xcb0 [ocfs2] __ocfs2_change_file_space+0x4a5/0x650 [ocfs2] ocfs2_fallocate+0x83/0xa0 [ocfs2] vfs_fallocate+0x148/0x230 SyS_fallocate+0x48/0x80 do_syscall_64+0x79/0x170 Signed-off-by: Changwei Ge Signed-off-by: Andrew Morton Reviewed-by: Joseph Qi Cc: Mark Fasheh Cc: Joel Becker Cc: Junxiao Bi Cc: Changwei Ge Cc: Gang He Cc: Jun Piao Cc: Link: http://lkml.kernel.org/r/20200407082754.17565-1-chge@linux.alibaba.com Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- fs/ocfs2/alloc.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/fs/ocfs2/alloc.c +++ b/fs/ocfs2/alloc.c @@ -7206,6 +7206,10 @@ int ocfs2_truncate_inline(struct inode * struct ocfs2_dinode *di = (struct ocfs2_dinode *)di_bh->b_data; struct ocfs2_inline_data *idata = &di->id2.i_data; + /* No need to punch hole beyond i_size. */ + if (start >= i_size_read(inode)) + return 0; + if (end > i_size_read(inode)) end = i_size_read(inode);