diff options
author | David Howells <dhowells@redhat.com> | 2024-03-28 07:59:18 +0000 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2024-05-01 18:08:21 +0100 |
commit | c20c0d7325abd9a8bf985a934591d75d514a3d4d (patch) | |
tree | 1b0f6f4d1f2ddabcb27a3c4ed65ac5db3a84da1f /fs/smb/client/cifsglob.h | |
parent | edea94a69730b74a8867bbafe742c3fc4e580722 (diff) | |
download | lwn-c20c0d7325abd9a8bf985a934591d75d514a3d4d.tar.gz lwn-c20c0d7325abd9a8bf985a934591d75d514a3d4d.zip |
cifs: Make add_credits_and_wake_if() clear deducted credits
Make add_credits_and_wake_if() clear the amount of credits in the
cifs_credits struct after it has returned them to the overall counter.
This allows add_credits_and_wake_if() to be called multiple times during
the error handling and cleanup without accidentally returning the credits
again and again.
Note that the wake_up() in add_credits_and_wake_if() may also be
superfluous as ->add_credits() also does a wake on the request_q.
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Steve French <sfrench@samba.org>
cc: Shyam Prasad N <nspmangalore@gmail.com>
cc: Rohith Surabattula <rohiths.msft@gmail.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Diffstat (limited to 'fs/smb/client/cifsglob.h')
-rw-r--r-- | fs/smb/client/cifsglob.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h index 29c9ee2dd304..611f59c6d2c0 100644 --- a/fs/smb/client/cifsglob.h +++ b/fs/smb/client/cifsglob.h @@ -881,11 +881,12 @@ add_credits(struct TCP_Server_Info *server, const struct cifs_credits *credits, static inline void add_credits_and_wake_if(struct TCP_Server_Info *server, - const struct cifs_credits *credits, const int optype) + struct cifs_credits *credits, const int optype) { if (credits->value) { server->ops->add_credits(server, credits, optype); wake_up(&server->request_q); + credits->value = 0; } } |