summary refs log tree commit diff
path: root/fs/cifs/readdir.c
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2011-12-15 22:02:34 -0800
committerOlof Johansson <olof@lixom.net>2011-12-15 22:02:34 -0800
commit02735a29d8ce882ec698803f064e17888874780c (patch)
tree6a4afa3bc8b6d4334df24910a56f77adf126b0c7 /fs/cifs/readdir.c
parent8d685b7f4d9c9882442bf1b492558d5f17b694fa (diff)
parent3d911ad22e8405c1a333a6812e405cb1a5ae9829 (diff)
downloadlinux-02735a29d8ce882ec698803f064e17888874780c.tar.gz
Merge branch 'at91/defconfig' into next/cleanup
Diffstat (limited to 'fs/cifs/readdir.c')
-rw-r--r--fs/cifs/readdir.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index 5de03ec20144..a090bbe6ee29 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -554,7 +554,10 @@ static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon,
 				 rc);
 			return rc;
 		}
-		cifs_save_resume_key(cifsFile->srch_inf.last_entry, cifsFile);
+		/* FindFirst/Next set last_entry to NULL on malformed reply */
+		if (cifsFile->srch_inf.last_entry)
+			cifs_save_resume_key(cifsFile->srch_inf.last_entry,
+						cifsFile);
 	}
 
 	while ((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
@@ -562,7 +565,10 @@ static int find_cifs_entry(const int xid, struct cifs_tcon *pTcon,
 		cFYI(1, "calling findnext2");
 		rc = CIFSFindNext(xid, pTcon, cifsFile->netfid,
 				  &cifsFile->srch_inf);
-		cifs_save_resume_key(cifsFile->srch_inf.last_entry, cifsFile);
+		/* FindFirst/Next set last_entry to NULL on malformed reply */
+		if (cifsFile->srch_inf.last_entry)
+			cifs_save_resume_key(cifsFile->srch_inf.last_entry,
+						cifsFile);
 		if (rc)
 			return -ENOENT;
 	}