diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c index 558890ada0e5..c766b4a2630b 100644 --- a/drivers/usb/core/file.c +++ b/drivers/usb/core/file.c @@ -33,21 +33,20 @@ static DEFINE_MUTEX(init_usb_class_mutex); static int usb_open(struct inode *inode, struct file *file) { - int err = -ENODEV; + int err; const struct file_operations *new_fops; down_read(&minor_rwsem); new_fops = fops_get(usb_minors[iminor(inode)]); + up_read(&minor_rwsem); if (!new_fops) - goto done; + return -ENODEV; replace_fops(file, new_fops); /* Curiouser and curiouser... NULL ->open() as "no device" ? */ if (file->f_op->open) err = file->f_op->open(inode, file); - done: - up_read(&minor_rwsem); return err; }