Message ID | 1503255883-3041-19-git-send-email-longli@exchange.microsoft.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index 1f08c75..43a7b60 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -2504,6 +2504,16 @@ smb2_readv_callback(struct mid_q_entry *mid) rdata->result = -EIO; } + /* + * If this rdata has a memmory registered, the MR can be freed + * MR needs to be freed as soon as I/O finishes to prevent deadlock + * because they have limited number and are used for future I/Os + */ + if (rdata->mr) { + smbd_deregister_mr(rdata->mr); + rdata->mr = NULL; + } + if (rdata->result) cifs_stats_fail_inc(tcon, SMB2_READ_HE);