]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fs/open: make do_truncate() killable
authorMax Kellermann <max.kellermann@ionos.com>
Tue, 13 May 2025 15:03:26 +0000 (17:03 +0200)
committerChristian Brauner <brauner@kernel.org>
Thu, 15 May 2025 10:03:12 +0000 (12:03 +0200)
Allows killing processes that are waiting for the inode lock.

Signed-off-by: Max Kellermann <max.kellermann@ionos.com>
Link: https://lore.kernel.org/20250513150327.1373061-3-max.kellermann@ionos.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/open.c

index d2f2df52c458dab128da64216f4dd2988e109d9c..7828234a7caa40c83e69683bd1ecfe69a90e2b49 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -60,7 +60,10 @@ int do_truncate(struct mnt_idmap *idmap, struct dentry *dentry,
        if (ret)
                newattrs.ia_valid |= ret | ATTR_FORCE;
 
-       inode_lock(dentry->d_inode);
+       ret = inode_lock_killable(dentry->d_inode);
+       if (ret)
+               return ret;
+
        /* Note any delegations or leases have already been broken: */
        ret = notify_change(idmap, dentry, &newattrs, NULL);
        inode_unlock(dentry->d_inode);