struct s3c2410_ep       *ep = to_s3c2410_ep(_ep);
        int                     retval = -EINVAL;
        unsigned long           flags;
-       struct s3c2410_request  *req = NULL;
+       struct s3c2410_request  *req = NULL, *iter;
 
        dprintk(DEBUG_VERBOSE, "%s(%p,%p)\n", __func__, _ep, _req);
 
 
        local_irq_save(flags);
 
-       list_for_each_entry(req, &ep->queue, queue) {
-               if (&req->req == _req) {
-                       list_del_init(&req->queue);
-                       _req->status = -ECONNRESET;
-                       retval = 0;
-                       break;
-               }
+       list_for_each_entry(iter, &ep->queue, queue) {
+               if (&iter->req != _req)
+                       continue;
+               list_del_init(&iter->queue);
+               _req->status = -ECONNRESET;
+               req = iter;
+               retval = 0;
+               break;
        }
 
        if (retval == 0) {