Patch "afs: Fix merge preference rule failure condition" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    afs: Fix merge preference rule failure condition

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     afs-fix-merge-preference-rule-failure-condition.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a213d709cf2c914864ac1e1c954eb988a68e3aed
Author: Lizhi Xu <lizhi.xu@xxxxxxxxxxxxx>
Date:   Tue Jan 7 14:52:32 2025 +0000

    afs: Fix merge preference rule failure condition
    
    [ Upstream commit 17a4fde81d3a7478d97d15304a6d61094a10c2e3 ]
    
    syzbot reported a lock held when returning to userspace[1].  This is
    because if argc is less than 0 and the function returns directly, the held
    inode lock is not released.
    
    Fix this by store the error in ret and jump to done to clean up instead of
    returning directly.
    
    [dh: Modified Lizhi Xu's original patch to make it honour the error code
    from afs_split_string()]
    
    [1]
    WARNING: lock held when returning to user space!
    6.13.0-rc3-syzkaller-00209-g499551201b5f #0 Not tainted
    ------------------------------------------------
    syz-executor133/5823 is leaving the kernel with locks still held!
    1 lock held by syz-executor133/5823:
     #0: ffff888071cffc00 (&sb->s_type->i_mutex_key#9){++++}-{4:4}, at: inode_lock include/linux/fs.h:818 [inline]
     #0: ffff888071cffc00 (&sb->s_type->i_mutex_key#9){++++}-{4:4}, at: afs_proc_addr_prefs_write+0x2bb/0x14e0 fs/afs/addr_prefs.c:388
    
    Reported-by: syzbot+76f33569875eb708e575@xxxxxxxxxxxxxxxxxxxxxxxxx
    Closes: https://syzkaller.appspot.com/bug?extid=76f33569875eb708e575
    Signed-off-by: Lizhi Xu <lizhi.xu@xxxxxxxxxxxxx>
    Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20241226012616.2348907-1-lizhi.xu@xxxxxxxxxxxxx/
    Link: https://lore.kernel.org/r/529850.1736261552@xxxxxxxxxxxxxxxxxxxxxx
    Tested-by: syzbot+76f33569875eb708e575@xxxxxxxxxxxxxxxxxxxxxxxxx
    cc: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
    cc: linux-afs@xxxxxxxxxxxxxxxxxxx
    Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/afs/addr_prefs.c b/fs/afs/addr_prefs.c
index a189ff8a5034e..c0384201b8feb 100644
--- a/fs/afs/addr_prefs.c
+++ b/fs/afs/addr_prefs.c
@@ -413,8 +413,10 @@ int afs_proc_addr_prefs_write(struct file *file, char *buf, size_t size)
 
 	do {
 		argc = afs_split_string(&buf, argv, ARRAY_SIZE(argv));
-		if (argc < 0)
-			return argc;
+		if (argc < 0) {
+			ret = argc;
+			goto done;
+		}
 		if (argc < 2)
 			goto inval;
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux