]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - fs/cifs/smb2misc.c
CIFS: Fix a memory leak when a lease break comes
[mirror_ubuntu-bionic-kernel.git] / fs / cifs / smb2misc.c
index b0c43345cd981c082e3de5965e647a5432197605..38c93c305c9ed345ed7bbf1c1d3b88a6697f3347 100644 (file)
@@ -171,6 +171,10 @@ smb2_check_message(char *buf, unsigned int length)
        if (4 + len != clc_len) {
                cifs_dbg(FYI, "Calculated size %u length %u mismatch mid %llu\n",
                         clc_len, 4 + len, mid);
+               /* create failed on symlink */
+               if (command == SMB2_CREATE_HE &&
+                   hdr->Status == STATUS_STOPPED_ON_SYMLINK)
+                       return 0;
                /* Windows 7 server returns 24 bytes more */
                if (clc_len + 20 == len && command == SMB2_OPLOCK_BREAK_HE)
                        return 0;
@@ -473,6 +477,7 @@ smb2_is_valid_lease_break(char *buffer, struct TCP_Server_Info *server)
 
                                queue_work(cifsiod_wq, &cfile->oplock_break);
 
+                               kfree(lw);
                                spin_unlock(&cifs_file_list_lock);
                                spin_unlock(&cifs_tcp_ses_lock);
                                return true;