if (!EP_IS_LINKED(&epi->rdllink)) { 
if (!ep_is_linked(&epi->rdllink)) { 
static int ep_modify(struct eventpoll *ep, struct epitem *epi, struct epoll_event *event){	int pwake = 0;	unsigned int revents;	unsigned long flags;	/*	 * Set the new event interest mask before calling f_op->poll(), otherwise	 * a potential race might occur. In fact if we do this operation inside	 * the lock, an event might happen between the f_op->poll() call and the	 * new event set registering.	 */	epi->event.events = event->events;	/*	 * Get current event bits. We can safely use the file* here because	 * its usage count has been increased by the caller of this function.	 */	revents = epi->ffd.file->f_op->poll(epi->ffd.file, NULL);	write_lock_irqsave(&ep->lock, flags);	/* Copy the data member from inside the lock */	epi->event.data = event->data;	/*	 * If the item is not linked to the hash it means that it's on its	 * way toward the removal. Do nothing in this case.	 */	if (EP_RB_LINKED(&epi->rbn)) {		/*		 * If the item is "hot" and it is not registered inside the ready		 * list, push it inside. If the item is not "hot" and it is currently		 * registered inside the ready list, unlink it.		 */		if (revents & event->events) {			if (!EP_IS_LINKED(&epi->rdllink)) {				list_add_tail(&epi->rdllink, &ep->rdllist);				/* Notify waiting tasks that events are available */				if (waitqueue_active(&ep->wq))					wake_up(&ep->wq);				if (waitqueue_active(&ep->poll_wait))					pwake++;			}		}	}	write_unlock_irqrestore(&ep->lock, flags);	/* We have to call this outside the lock */	if (pwake)		ep_poll_safewake(&psw, &ep->poll_wait);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b030a4dd609e167da7f73c2d1fa5af864a0aea17/eventpoll.c/clean/fs/eventpoll.c