mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 14:04:54 +02:00
xen/gntdev: fix gntdev_mmap() error exit path
commit970655aa9bupstream. Commitd3eeb1d77c("xen/gntdev: use mmu_interval_notifier_insert") introduced an error in gntdev_mmap(): in case the call of mmu_interval_notifier_insert_locked() fails the exit path should not call mmu_interval_notifier_remove(), as this might result in NULL dereferences. One reason for failure is e.g. a signal pending for the running process. Fixes:d3eeb1d77c("xen/gntdev: use mmu_interval_notifier_insert") Cc: stable@vger.kernel.org Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com> Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> Link: https://lore.kernel.org/r/20210423054038.26696-1-jgross@suse.com Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
652c9689f5
commit
8a7027f011
|
|
@ -1005,8 +1005,10 @@ static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
|
||||||
err = mmu_interval_notifier_insert_locked(
|
err = mmu_interval_notifier_insert_locked(
|
||||||
&map->notifier, vma->vm_mm, vma->vm_start,
|
&map->notifier, vma->vm_mm, vma->vm_start,
|
||||||
vma->vm_end - vma->vm_start, &gntdev_mmu_ops);
|
vma->vm_end - vma->vm_start, &gntdev_mmu_ops);
|
||||||
if (err)
|
if (err) {
|
||||||
|
map->vma = NULL;
|
||||||
goto out_unlock_put;
|
goto out_unlock_put;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mutex_unlock(&priv->lock);
|
mutex_unlock(&priv->lock);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user