FAILED: patch "[PATCH] ceph: don't truncate file in atomic_open" failed to apply to 4.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 7cb9994754f8a36ae9e5ec4597c5c4c2d6c03832 Mon Sep 17 00:00:00 2001
From: Hu Weiwen <[email protected]>
Date: Fri, 1 Jul 2022 10:52:27 +0800
Subject: [PATCH] ceph: don't truncate file in atomic_open
Clear O_TRUNC from the flags sent in the MDS create request.
`atomic_open' is called before permission check. We should not do any modification to the file here. The caller will do the truncation afterward.
Fixes 124e68e74099 ("ceph: file operations")
Signed-off-by Hu Weiwen <[email protected]>
Reviewed-by Xiubo Li <[email protected]>
Signed-off-by Ilya Dryomov <[email protected]>
fs/ceph/file.c +6 -3
@@ -749,6 +749,11 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, err =ceph_wait_on_conflict_unlink (dentry);if (err)return err; +/* +* Do not truncate the file, since atomic_open is called before the +* permission check. The caller will do the truncation afterward. +*/ + flags &= ~O_TRUNC ;if (flags &O_CREAT ) {if (ceph_quota_is_max_files_exceeded (dir))
@@ -824,9 +829,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, }set_bit (CEPH_MDS_R_PARENT_LOCKED , &req->r_req_flags); - err =ceph_mdsc_do_request (mdsc, - (flags & (O_CREAT |O_TRUNC )) ? dir :NULL , - req); + err =ceph_mdsc_do_request (mdsc, (flags &O_CREAT ) ? dir :NULL , req);if (err == -ENOENT ) { dentry =ceph_handle_snapdir (req, dentry);if (IS_ERR (dentry)) {