PDBG("%s ep %p tid %u\n", __func__, ep, ep->hwtid);
 
-       /*
-        * Stop mpa timer.  If it expired, then
-        * we ignore the MPA reply.  process_timeout()
-        * will abort the connection.
-        */
-       if (stop_ep_timer(ep))
-               return 0;
-
        /*
         * If we get more than the supported amount of private data
         * then we must fail this connection.
         */
        if (ep->mpa_pkt_len + skb->len > sizeof(ep->mpa_pkt)) {
                err = -EINVAL;
-               goto err;
+               goto err_stop_timer;
        }
 
        /*
                printk(KERN_ERR MOD "%s MPA version mismatch. Local = %d,"
                       " Received = %d\n", __func__, mpa_rev, mpa->revision);
                err = -EPROTO;
-               goto err;
+               goto err_stop_timer;
        }
        if (memcmp(mpa->key, MPA_KEY_REP, sizeof(mpa->key))) {
                err = -EPROTO;
-               goto err;
+               goto err_stop_timer;
        }
 
        plen = ntohs(mpa->private_data_size);
         */
        if (plen > MPA_MAX_PRIVATE_DATA) {
                err = -EPROTO;
-               goto err;
+               goto err_stop_timer;
        }
 
        /*
         */
        if (ep->mpa_pkt_len > (sizeof(*mpa) + plen)) {
                err = -EPROTO;
-               goto err;
+               goto err_stop_timer;
        }
 
        ep->plen = (u8) plen;
 
        if (mpa->flags & MPA_REJECT) {
                err = -ECONNREFUSED;
-               goto err;
+               goto err_stop_timer;
        }
 
+       /*
+        * Stop mpa timer.  If it expired, then
+        * we ignore the MPA reply.  process_timeout()
+        * will abort the connection.
+        */
+       if (stop_ep_timer(ep))
+               return 0;
+
        /*
         * If we get here we have accumulated the entire mpa
         * start reply message including private data. And
                goto out;
        }
        goto out;
+err_stop_timer:
+       stop_ep_timer(ep);
 err:
        disconnect = 2;
 out: