spin_unlock(&gpio_lock); 
gpio_release(struct inode *inode, struct file *filp){	struct gpio_private *p = alarmlist;	struct gpio_private *todel = (struct gpio_private *)filp->private_data;		/* unlink from alarmlist and free the private structure */	if (p == todel) {		alarmlist = todel->next;	} else {		while (p->next != todel)			p = p->next;		p->next = todel->next;	}	kfree(todel);	/* Check if there are still any alarms set */	p = alarmlist;	while (p) {		if (p->highalarm | p->lowalarm) {			gpio_some_alarms = 1;			return 0;		}		p = p->next;	}	gpio_some_alarms = 0;			return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/7e9204265b4ec6680fad9abc7a78b94087983916/gpio.c/buggy/arch/cris/arch-v10/drivers/gpio.c