On Wed, 23 Oct 2024 13:58:50 +0800, shao.mingyin@xxxxxxxxxx wrote: > We find a bug that the rcS file may not be executed, resulting in module > and business not being loaded. When trying to execute rcS, the fput() > related to rcS has not done to complete, so deny_write_access() returns > ETXTBSY. > > rcS is opened in do_populate_rootfs before executed. > After flush_delayed_fput() has done to complete, do_populate_rootfs > assumes that all fput() related to do_populate_rootfs has done to complete. > However, flush_delayed_fput can only ensure that the fput() on current > delayed_fput_list has done to complete, the fput() that has already been > removed from delayed_fput_list in advance may not be completed. Attempting > to execute the file associated with this fput() now will result in ETXTBSY. > Most of the time, the fput() related to rcS has done to complete in > do_populate_rootfs before executing rcS, but sometimes it's not. > > [...] Commit message rewritten by me. --- Applied to the vfs-6.14.misc branch of the vfs/vfs.git tree. Patches in the vfs-6.14.misc branch should appear in linux-next soon. Please report any outstanding bugs that were missed during review in a new review to the original patch series allowing us to drop it. It's encouraged to provide Acked-bys and Reviewed-bys even though the patch has now been applied. If possible patch trailers will be updated. Note that commit hashes shown below are subject to change due to rebase, trailer updates or similar. If in doubt, please check the listed branch. tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git branch: vfs-6.14.misc [1/1] fs: fix bug that fput() may not have done to complete in flush_delayed_fput https://git.kernel.org/vfs/vfs/c/c0ef70cf7a91