Fix for "requests in flight" showing negative
diff mbox series

Message ID CAH2r5mv6x_aJQJ_N9f+9zYFgFN7FkmpR1=sNzCR8Ln5m=kGL-Q@mail.gmail.com
State New
Headers show
Series
  • Fix for "requests in flight" showing negative
Related show

Commit Message

Steve French Sept. 22, 2019, 5:58 a.m. UTC
Requests in flight could display as negative when should be zero

Comments

Pavel Shilovsky Sept. 23, 2019, 5:26 p.m. UTC | #1
I guess it should be "open files" instead of "requests in flight" in
the title and the description of the patch.

Other than that looks good:

Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>

--
Best regards,
Pavel Shilovsky

сб, 21 сент. 2019 г. в 22:58, Steve French <smfrench@gmail.com>:

>
> Requests in flight could display as negative when should be zero
>
> --
> Thanks,
>
> Steve
Steve French Sept. 24, 2019, 3:47 a.m. UTC | #2
aaah - the typos -- thank you for noticing the obvious!

Fixed and repushed.

On Mon, Sep 23, 2019 at 12:26 PM Pavel Shilovsky <piastryyy@gmail.com> wrote:
>
> I guess it should be "open files" instead of "requests in flight" in
> the title and the description of the patch.
>
> Other than that looks good:
>
> Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
>
> --
> Best regards,
> Pavel Shilovsky
>
> сб, 21 сент. 2019 г. в 22:58, Steve French <smfrench@gmail.com>:
>
> >
> > Requests in flight could display as negative when should be zero
> >
> > --
> > Thanks,
> >
> > Steve

Patch
diff mbox series

From e3977a6ab646b7096a47b7dc8af61f31b8ef8ace Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@microsoft.com>
Date: Sun, 22 Sep 2019 00:55:46 -0500
Subject: [PATCH] smb3: fix leak in "requests in flight" perf counter

We were not bumping "requests in flight" up in some cases
on opens of the share root so "requests in flight" could
end up showing as a negative counter.

CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
---
 fs/cifs/smb2ops.c | 5 +++++
 fs/cifs/smb2pdu.c | 1 +
 2 files changed, 6 insertions(+)

diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 0e66dc1aa1c9..901f2ed3fe82 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -762,6 +762,8 @@  int open_shroot(unsigned int xid, struct cifs_tcon *tcon, struct cifs_fid *pfid)
 		goto oshr_exit;
 	}
 
+	atomic_inc(&tcon->num_remote_opens);
+
 	o_rsp = (struct smb2_create_rsp *)rsp_iov[0].iov_base;
 	oparms.fid->persistent_fid = o_rsp->PersistentFileId;
 	oparms.fid->volatile_fid = o_rsp->VolatileFileId;
@@ -1187,6 +1189,7 @@  smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
 
 	rc = compound_send_recv(xid, ses, flags, 3, rqst,
 				resp_buftype, rsp_iov);
+	/* no need to bump num_remote_opens because handle immediately closed */
 
  sea_exit:
 	kfree(ea);
@@ -1529,6 +1532,8 @@  smb2_ioctl_query_info(const unsigned int xid,
 				resp_buftype, rsp_iov);
 	if (rc)
 		goto iqinf_exit;
+
+	/* No need to bump num_remote_opens since handle immediately closed */
 	if (qi.flags & PASSTHRU_FSCTL) {
 		pqi = (struct smb_query_info __user *)arg;
 		io_rsp = (struct smb2_ioctl_rsp *)rsp_iov[1].iov_base;
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 8bcb278fdb0a..6ea2430240f5 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -2372,6 +2372,7 @@  int smb311_posix_mkdir(const unsigned int xid, struct inode *inode,
 	rqst.rq_iov = iov;
 	rqst.rq_nvec = n_iov;
 
+	/* no need to inc num_remote_opens because we close it just below */
 	trace_smb3_posix_mkdir_enter(xid, tcon->tid, ses->Suid, CREATE_NOT_FILE,
 				    FILE_WRITE_ATTRIBUTES);
 	/* resource #4: response buffer */
-- 
2.20.1