OSDN Git Service

smb3: fix potential null dereference in decrypt offload
authorSteve French <stfrench@microsoft.com>
Fri, 13 Sep 2019 21:47:31 +0000 (16:47 -0500)
committerSteve French <stfrench@microsoft.com>
Mon, 16 Sep 2019 16:43:38 +0000 (11:43 -0500)
commit a091c5f67c99 ("smb3: allow parallelizing decryption of reads")
had a potential null dereference

Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Suggested-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2ops.c

index 5776d7b..eaed180 100644 (file)
@@ -4055,6 +4055,7 @@ static void smb2_decrypt_offload(struct work_struct *work)
                goto free_pages;
        }
 
+       dw->server->lstrp = jiffies;
        mid = smb2_find_mid(dw->server, dw->buf);
        if (mid == NULL)
                cifs_dbg(FYI, "mid not found\n");
@@ -4063,14 +4064,10 @@ static void smb2_decrypt_offload(struct work_struct *work)
                rc = handle_read_data(dw->server, mid, dw->buf,
                                      dw->server->vals->read_rsp_size,
                                      dw->ppages, dw->npages, dw->len);
+               mid->callback(mid);
+               cifs_mid_q_entry_release(mid);
        }
 
-       dw->server->lstrp = jiffies;
-
-       mid->callback(mid);
-
-       cifs_mid_q_entry_release(mid);
-
 free_pages:
        for (i = dw->npages-1; i >= 0; i--)
                put_page(dw->ppages[i]);