cifs: don't take extra tlink reference in initiate_cifs_search
authorJeff Layton <jlayton@redhat.com>
Fri, 12 Nov 2010 11:30:29 +0000 (06:30 -0500)
committerSteve French <sfrench@us.ibm.com>
Sat, 13 Nov 2010 03:26:17 +0000 (03:26 +0000)
commit59c55ba1fba61ae13fbfff094a674e73407201f1
tree0ab51709f8115e4bbd8bed8302175e7d4be5ce3c
parent987b21d7d91d0335e164a41a312174851c58f333
cifs: don't take extra tlink reference in initiate_cifs_search

It's possible for initiate_cifs_search to be called on a filp that
already has private_data attached. If this happens, we'll end up
calling cifs_sb_tlink, taking an extra reference to the tlink and
attaching that to the cifsFileInfo. This leads to refcount leaks
that manifest as a "stuck" cifsd at umount time.

Fix this by only looking up the tlink for the cifsFile on the filp's
first pass through this function. When called on a filp that already
has cifsFileInfo associated with it, just use the tlink reference
that it already owns.

This patch fixes samba.org bug 7792:

    https://bugzilla.samba.org/show_bug.cgi?id=7792

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-and-Tested-by: Suresh Jayaraman <sjayaraman@suse.de>
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/readdir.c