spin_unlock(&vino_drvdata->input_lock); 
 spin_unlock_irqrestore(&vino_drvdata->input_lock, flags); 
static int vino_v4l2_s_parm(struct vino_channel_settings *vcs,			    struct v4l2_streamparm *sp){	switch (sp->type) {	case V4L2_BUF_TYPE_VIDEO_CAPTURE: {		struct v4l2_captureparm *cp = &sp->parm.capture;		spin_lock(&vino_drvdata->input_lock);		if (!vino_is_input_owner(vcs)) {			spin_unlock(&vino_drvdata->input_lock);			return -EINVAL;		}		if ((cp->timeperframe.numerator == 0) ||		    (cp->timeperframe.denominator == 0)) {			/* reset framerate */			vino_set_default_framerate(vcs);		} else {			vino_set_framerate(vcs, cp->timeperframe.denominator /					   cp->timeperframe.numerator);		}		spin_unlock(&vino_drvdata->input_lock);		// TODO: set buffers according to cp->readbuffers		break;	}	case V4L2_BUF_TYPE_VIDEO_OVERLAY:	default:		return -EINVAL;	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a637a114f36b94a1ad8b9867f43bac0414958420/vino.c/buggy/drivers/media/video/vino.c