Patch "cifs: update iface_last_update on each query-and-update" has been added to the 6.7-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

    cifs: update iface_last_update on each query-and-update

to the 6.7-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:
     cifs-update-iface_last_update-on-each-query-and-upda.patch
and it can be found in the queue-6.7 subdirectory.

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



commit edd9cd84182713e9f3392baadc56ba8451432e6e
Author: Shyam Prasad N <sprasad@xxxxxxxxxxxxx>
Date:   Wed Jan 3 12:51:49 2024 +0000

    cifs: update iface_last_update on each query-and-update
    
    [ Upstream commit 78e727e58e54efca4c23863fbd9e16e9d2d83f81 ]
    
    iface_last_update was an unused field when it was introduced.
    Later, when we had periodic update of server interface list,
    this field was used regularly to decide when to update next.
    
    However, with the new logic of updating the interfaces, it
    becomes crucial that this field be updated whenever
    parse_server_interfaces runs successfully.
    
    This change updates this field when either the server does
    not support query of interfaces; so that we do not query
    the interfaces repeatedly. It also updates the field when
    the function reaches the end.
    
    Fixes: aa45dadd34e4 ("cifs: change iface_list from array to sorted linked list")
    Signed-off-by: Shyam Prasad N <sprasad@xxxxxxxxxxxxx>
    Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index 17310f3a9d89..beb81fa00cff 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -615,6 +615,7 @@ parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf,
 				 "Empty network interface list returned by server %s\n",
 				 ses->server->hostname);
 		rc = -EOPNOTSUPP;
+		ses->iface_last_update = jiffies;
 		goto out;
 	}
 
@@ -712,7 +713,6 @@ parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf,
 
 		ses->iface_count++;
 		spin_unlock(&ses->iface_lock);
-		ses->iface_last_update = jiffies;
 next_iface:
 		nb_iface++;
 		next = le32_to_cpu(p->Next);
@@ -734,6 +734,8 @@ parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf,
 	if ((bytes_left > 8) || p->Next)
 		cifs_dbg(VFS, "%s: incomplete interface info\n", __func__);
 
+	ses->iface_last_update = jiffies;
+
 out:
 	/*
 	 * Go through the list again and put the inactive entries




[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