]> git.baikalelectronics.ru Git - kernel.git/commit
cifs: fix kref underflow in close_shroot()
authorRonnie Sahlberg <lsahlber@redhat.com>
Thu, 28 Mar 2019 01:20:02 +0000 (11:20 +1000)
committerSteve French <stfrench@microsoft.com>
Mon, 1 Apr 2019 19:33:30 +0000 (14:33 -0500)
commitb2a33d8ad5fdf0dd85cc75146b752536b886bc1f
treef32e1140c6857b8d6d751bb014fbe4c5793a9d57
parentd5eca429a9cb25a590fced4b5655f5fd6dbf4fd3
cifs: fix kref underflow in close_shroot()

Fix a bug where we used to not initialize the cached fid structure at all
in open_shroot() if the open was successful but we did not get a lease.
This would leave the structure uninitialized and later when we close the handle
we would in close_shroot() try to kref_put() an uninitialized refcount.

Fix this by always initializing this structure if the open was successful
but only do the extra get() if we got a lease.
This extra get() is only used to hold the structure until we get a lease
break from the server at which point we will kref_put() it during lease
processing.

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
CC: Stable <stable@vger.kernel.org>
fs/cifs/smb2ops.c