ALSA: us122l: fix missing unlock in usb_stream_hwdep_vm_fault()
Should unlock us122l->mutex before returning VM_FAULT_SIGBUS. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8825e8e8d0
commit
428ffb7151
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue