mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
cifs: Fix missing put_xid in cifs_file_strict_mmap
commit f04a703c3d613845ae3141bfaf223489de8ab3eb upstream. If cifs_zap_mapping() returned an error, we would return without putting the xid that we got earlier. Restructure cifs_file_strict_mmap() and cifs_file_mmap() to be more similar to each other and have a single point of return that always puts the xid. Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Signed-off-by: Steve French <smfrench@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b4a9ffad97
commit
061df7705a
@ -3488,20 +3488,18 @@ static const struct vm_operations_struct cifs_file_vm_ops = {
|
||||
|
||||
int cifs_file_strict_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
{
|
||||
int rc, xid;
|
||||
int xid, rc = 0;
|
||||
struct inode *inode = file_inode(file);
|
||||
|
||||
xid = get_xid();
|
||||
|
||||
if (!CIFS_CACHE_READ(CIFS_I(inode))) {
|
||||
if (!CIFS_CACHE_READ(CIFS_I(inode)))
|
||||
rc = cifs_zap_mapping(inode);
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = generic_file_mmap(file, vma);
|
||||
if (rc == 0)
|
||||
if (!rc)
|
||||
rc = generic_file_mmap(file, vma);
|
||||
if (!rc)
|
||||
vma->vm_ops = &cifs_file_vm_ops;
|
||||
|
||||
free_xid(xid);
|
||||
return rc;
|
||||
}
|
||||
@ -3511,16 +3509,16 @@ int cifs_file_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
int rc, xid;
|
||||
|
||||
xid = get_xid();
|
||||
|
||||
rc = cifs_revalidate_file(file);
|
||||
if (rc) {
|
||||
if (rc)
|
||||
cifs_dbg(FYI, "Validation prior to mmap failed, error=%d\n",
|
||||
rc);
|
||||
free_xid(xid);
|
||||
return rc;
|
||||
}
|
||||
rc = generic_file_mmap(file, vma);
|
||||
if (rc == 0)
|
||||
if (!rc)
|
||||
rc = generic_file_mmap(file, vma);
|
||||
if (!rc)
|
||||
vma->vm_ops = &cifs_file_vm_ops;
|
||||
|
||||
free_xid(xid);
|
||||
return rc;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user