1028{
1029 int minor = iminor(inode);
1030 struct vivi_dev *dev;
1031 struct vivi_fh *fh = NULL;
1032 int i;
1033 int retval = 0;
1034
1035 printk(KERN_DEBUG "vivi: open called (minor=%d)\n", minor);
1036
1037 lock_kernel();
1038 list_for_each_entry(dev, &vivi_devlist, vivi_devlist)
1039 if (dev->vfd->minor == minor)
1040 goto found;
1041 unlock_kernel();
1042 return -ENODEV;
1043
1044found:
1045 mutex_lock(&dev->mutex);
1046 dev->users++;
1047
1048 if (dev->users > 1) {
1049 dev->users--;
1050 retval = -EBUSY;
1051 goto unlock;
1052 }
1053
1054 dprintk(dev, 1, "open minor=%d type=%s users=%d\n", minor,
1055 v4l2_type_names[V4L2_BUF_TYPE_VIDEO_CAPTURE], dev->users);
1056
1057
1058 fh = kzalloc(sizeof(*fh), GFP_KERNEL);
1059 if (NULL == fh) {
1060 dev->users--;
1061 retval = -ENOMEM;
1062 goto unlock;
1063 }
1064unlock:
1065 mutex_unlock(&dev->mutex);
1066 if (retval) {
1067 unlock_kernel();
1068 return retval;