kfree(b);
 }
 
+/*
+ * Ping the other end to fill our RTT cache and to retrieve the rwind
+ * and MTU parameters.
+ */
+static void rxrpc_send_ping(struct rxrpc_call *call, struct sk_buff *skb)
+{
+       struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
+       ktime_t now = skb->tstamp;
+
+       if (call->peer->rtt_usage < 3 ||
+           ktime_before(ktime_add_ms(call->peer->rtt_last_req, 1000), now))
+               rxrpc_propose_ACK(call, RXRPC_ACK_PING, sp->hdr.serial,
+                                 true, true,
+                                 rxrpc_propose_ack_ping_for_params);
+}
+
 /*
  * Allocate a new incoming call from the prealloc pool, along with a connection
  * and a peer as necessary.
                                  sp->hdr.seq, RX_INVALID_OPERATION, ESHUTDOWN);
                skb->mark = RXRPC_SKB_MARK_REJECT_ABORT;
                skb->priority = RX_INVALID_OPERATION;
-               _leave(" = NULL [close]");
-               call = NULL;
-               goto out;
+               goto no_call;
        }
 
        /* The peer, connection and call may all have sprung into existence due
        call = rxrpc_alloc_incoming_call(rx, local, peer, conn, skb);
        if (!call) {
                skb->mark = RXRPC_SKB_MARK_REJECT_BUSY;
-               _leave(" = NULL [busy]");
-               call = NULL;
-               goto out;
+               goto no_call;
        }
 
        trace_rxrpc_receive(call, rxrpc_receive_incoming,
         */
        rxrpc_put_call(call, rxrpc_call_put);
 
-       _leave(" = %p{%d}", call, call->debug_id);
-out:
        spin_unlock(&rx->incoming_lock);
+
+       rxrpc_send_ping(call, skb);
+       mutex_unlock(&call->user_mutex);
+
+       _leave(" = %p{%d}", call, call->debug_id);
        return call;
+
+no_call:
+       spin_unlock(&rx->incoming_lock);
+       _leave(" = NULL [%u]", skb->mark);
+       return NULL;
 }
 
 /*
 
        goto out_no_clear_ca;
 }
 
-/*
- * Ping the other end to fill our RTT cache and to retrieve the rwind
- * and MTU parameters.
- */
-static void rxrpc_send_ping(struct rxrpc_call *call, struct sk_buff *skb)
-{
-       struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
-       ktime_t now = skb->tstamp;
-
-       if (call->peer->rtt_usage < 3 ||
-           ktime_before(ktime_add_ms(call->peer->rtt_last_req, 1000), now))
-               rxrpc_propose_ACK(call, RXRPC_ACK_PING, sp->hdr.serial,
-                                 true, true,
-                                 rxrpc_propose_ack_ping_for_params);
-}
-
 /*
  * Apply a hard ACK by advancing the Tx window.
  */
                call = rxrpc_new_incoming_call(local, rx, skb);
                if (!call)
                        goto reject_packet;
-               rxrpc_send_ping(call, skb);
-               mutex_unlock(&call->user_mutex);
        }
 
        /* Process a call packet; this either discards or passes on the ref