提交 428ffb71 编写于 作者: L Li Zefan 提交者: Takashi Iwai

ALSA: us122l: fix missing unlock in usb_stream_hwdep_vm_fault()

Should unlock us122l->mutex before returning VM_FAULT_SIGBUS.
Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 8825e8e8
......@@ -118,12 +118,11 @@ static int usb_stream_hwdep_vm_fault(struct vm_area_struct *area,
void *vaddr;
struct us122l *us122l = area->vm_private_data;
struct usb_stream *s;
int vm_f = VM_FAULT_SIGBUS;
mutex_lock(&us122l->mutex);
s = us122l->sk.s;
if (!s)
goto out;
goto unlock;
offset = vmf->pgoff << PAGE_SHIFT;
if (offset < PAGE_ALIGN(s->read_size))
......@@ -131,7 +130,7 @@ static int usb_stream_hwdep_vm_fault(struct vm_area_struct *area,
else {
offset -= PAGE_ALIGN(s->read_size);
if (offset >= PAGE_ALIGN(s->write_size))
goto out;
goto unlock;
vaddr = us122l->sk.write_page + offset;
}
......@@ -141,9 +140,11 @@ static int usb_stream_hwdep_vm_fault(struct vm_area_struct *area,
mutex_unlock(&us122l->mutex);
vmf->page = page;
vm_f = 0;
out:
return vm_f;
return 0;
unlock:
mutex_unlock(&us122l->mutex);
return VM_FAULT_SIGBUS;
}
static void usb_stream_hwdep_vm_close(struct vm_area_struct *area)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册