spin_lock(&vino_drvdata->input_lock); 
spin_lock_irqsave(&vino_drvdata->input_lock, flags); 
static void vino_release_input(struct vino_channel_settings *vcs){	struct vino_channel_settings *vcs2 = (vcs->channel == VINO_CHANNEL_A) ?		&vino_drvdata->b : &vino_drvdata->a;	dprintk("vino_release_input():\n");	spin_lock(&vino_drvdata->input_lock);	/* Release ownership of the channel	 * and if the other channel takes input from	 * the same source, transfer the ownership */	if (vino_drvdata->camera.owner == vcs->channel) {		if (vcs2->input == VINO_INPUT_D1) {			vino_drvdata->camera.owner = vcs2->channel;		} else {			i2c_release_client(vino_drvdata->camera.driver);			vino_drvdata->camera.owner = VINO_NO_CHANNEL;		}	} else if (vino_drvdata->decoder.owner == vcs->channel) {		if ((vcs2->input == VINO_INPUT_COMPOSITE) ||			 (vcs2->input == VINO_INPUT_SVIDEO)) {			vino_drvdata->decoder.owner = vcs2->channel;		} else {			i2c_release_client(vino_drvdata->decoder.driver);			vino_drvdata->decoder.owner = VINO_NO_CHANNEL;		}	}	vcs->input = VINO_INPUT_NONE;	spin_unlock(&vino_drvdata->input_lock);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a637a114f36b94a1ad8b9867f43bac0414958420/vino.c/buggy/drivers/media/video/vino.c