Commit 30a853c1 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag '6.1-rc6-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull cifs fixes from Steve French:
 "Two small cifs/smb3 client fixes:

   - an unlock missing in an error path in copychunk_range found by
     xfstest 476

   - a fix for a use after free in a debug code path"

* tag '6.1-rc6-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6:
  cifs: fix missing unlock in cifs_file_copychunk_range()
  cifs: Use after free in debug code
parents faf68e35 50248784
...@@ -1281,7 +1281,7 @@ ssize_t cifs_file_copychunk_range(unsigned int xid, ...@@ -1281,7 +1281,7 @@ ssize_t cifs_file_copychunk_range(unsigned int xid,
rc = filemap_write_and_wait_range(src_inode->i_mapping, off, rc = filemap_write_and_wait_range(src_inode->i_mapping, off,
off + len - 1); off + len - 1);
if (rc) if (rc)
goto out; goto unlock;
/* should we flush first and last page first */ /* should we flush first and last page first */
truncate_inode_pages(&target_inode->i_data, 0); truncate_inode_pages(&target_inode->i_data, 0);
...@@ -1297,6 +1297,8 @@ ssize_t cifs_file_copychunk_range(unsigned int xid, ...@@ -1297,6 +1297,8 @@ ssize_t cifs_file_copychunk_range(unsigned int xid,
* that target is updated on the server * that target is updated on the server
*/ */
CIFS_I(target_inode)->time = 0; CIFS_I(target_inode)->time = 0;
unlock:
/* although unlocking in the reverse order from locking is not /* although unlocking in the reverse order from locking is not
* strictly necessary here it is a little cleaner to be consistent * strictly necessary here it is a little cleaner to be consistent
*/ */
......
...@@ -302,14 +302,14 @@ cifs_chan_update_iface(struct cifs_ses *ses, struct TCP_Server_Info *server) ...@@ -302,14 +302,14 @@ cifs_chan_update_iface(struct cifs_ses *ses, struct TCP_Server_Info *server)
/* now drop the ref to the current iface */ /* now drop the ref to the current iface */
if (old_iface && iface) { if (old_iface && iface) {
kref_put(&old_iface->refcount, release_iface);
cifs_dbg(FYI, "replacing iface: %pIS with %pIS\n", cifs_dbg(FYI, "replacing iface: %pIS with %pIS\n",
&old_iface->sockaddr, &old_iface->sockaddr,
&iface->sockaddr); &iface->sockaddr);
} else if (old_iface) {
kref_put(&old_iface->refcount, release_iface); kref_put(&old_iface->refcount, release_iface);
} else if (old_iface) {
cifs_dbg(FYI, "releasing ref to iface: %pIS\n", cifs_dbg(FYI, "releasing ref to iface: %pIS\n",
&old_iface->sockaddr); &old_iface->sockaddr);
kref_put(&old_iface->refcount, release_iface);
} else { } else {
WARN_ON(!iface); WARN_ON(!iface);
cifs_dbg(FYI, "adding new iface: %pIS\n", &iface->sockaddr); cifs_dbg(FYI, "adding new iface: %pIS\n", &iface->sockaddr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment