diff options
author | Ronnie Sahlberg <lsahlber@redhat.com> | 2018-08-30 10:12:59 +1000 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2018-10-02 18:12:31 -0500 |
commit | ddf83afb9f60ee58cdec30bb615eff65d00ba05e (patch) | |
tree | 41a64ddbced37ea36da1defdcd8f2eb6c0a270fa /fs/cifs/connect.c | |
parent | 0595751f267994c3c7027377058e4185b3a28e75 (diff) | |
download | linux-stable-ddf83afb9f60ee58cdec30bb615eff65d00ba05e.tar.gz linux-stable-ddf83afb9f60ee58cdec30bb615eff65d00ba05e.tar.bz2 linux-stable-ddf83afb9f60ee58cdec30bb615eff65d00ba05e.zip |
cifs: add a warning if we try to to dequeue a deleted mid
cifs_delete_mid() is called once we are finished handling a mid and we
expect no more work done on this mid.
Needed to fix recent commit:
commit 730928c8f4be88e9d6a027a16b1e8fa9c59fc077
("cifs: update smb2_queryfs() to use compounding")
Add a warning if someone tries to dequeue a mid that has already been
flagged to be deleted.
Also change list_del() to list_del_init() so that if we have similar bugs
resurface in the future we will not oops.
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r-- | fs/cifs/connect.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 7aa08dba4719..e9d64c92b8da 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -659,7 +659,15 @@ dequeue_mid(struct mid_q_entry *mid, bool malformed) mid->mid_state = MID_RESPONSE_RECEIVED; else mid->mid_state = MID_RESPONSE_MALFORMED; - list_del_init(&mid->qhead); + /* + * Trying to handle/dequeue a mid after the send_recv() + * function has finished processing it is a bug. + */ + if (mid->mid_flags & MID_DELETED) + printk_once(KERN_WARNING + "trying to dequeue a deleted mid\n"); + else + list_del_init(&mid->qhead); spin_unlock(&GlobalMid_Lock); } |