rxrpc, afs: Use debug_ids rather than pointers in traces
[linux-block.git] / net / rxrpc / call_accept.c
index 3028298ca56134e86b1ef60c9987b37490e12f19..92ebd1d7e0bba665933c0a5ff2184f74926887c4 100644 (file)
@@ -34,7 +34,8 @@ static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx,
                                      struct rxrpc_backlog *b,
                                      rxrpc_notify_rx_t notify_rx,
                                      rxrpc_user_attach_call_t user_attach_call,
-                                     unsigned long user_call_ID, gfp_t gfp)
+                                     unsigned long user_call_ID, gfp_t gfp,
+                                     unsigned int debug_id)
 {
        const void *here = __builtin_return_address(0);
        struct rxrpc_call *call;
@@ -94,7 +95,7 @@ static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx,
        /* Now it gets complicated, because calls get registered with the
         * socket here, particularly if a user ID is preassigned by the user.
         */
-       call = rxrpc_alloc_call(rx, gfp);
+       call = rxrpc_alloc_call(rx, gfp, debug_id);
        if (!call)
                return -ENOMEM;
        call->flags |= (1 << RXRPC_CALL_IS_SERVICE);
@@ -174,7 +175,8 @@ int rxrpc_service_prealloc(struct rxrpc_sock *rx, gfp_t gfp)
        if (rx->discard_new_call)
                return 0;
 
-       while (rxrpc_service_prealloc_one(rx, b, NULL, NULL, 0, gfp) == 0)
+       while (rxrpc_service_prealloc_one(rx, b, NULL, NULL, 0, gfp,
+                                         atomic_inc_return(&rxrpc_debug_id)) == 0)
                ;
 
        return 0;
@@ -347,7 +349,7 @@ struct rxrpc_call *rxrpc_new_incoming_call(struct rxrpc_local *local,
                   service_id == rx->second_service))
                goto found_service;
 
-       trace_rxrpc_abort("INV", sp->hdr.cid, sp->hdr.callNumber, sp->hdr.seq,
+       trace_rxrpc_abort(0, "INV", sp->hdr.cid, sp->hdr.callNumber, sp->hdr.seq,
                          RX_INVALID_OPERATION, EOPNOTSUPP);
        skb->mark = RXRPC_SKB_MARK_LOCAL_ABORT;
        skb->priority = RX_INVALID_OPERATION;
@@ -358,7 +360,7 @@ found_service:
        spin_lock(&rx->incoming_lock);
        if (rx->sk.sk_state == RXRPC_SERVER_LISTEN_DISABLED ||
            rx->sk.sk_state == RXRPC_CLOSE) {
-               trace_rxrpc_abort("CLS", sp->hdr.cid, sp->hdr.callNumber,
+               trace_rxrpc_abort(0, "CLS", sp->hdr.cid, sp->hdr.callNumber,
                                  sp->hdr.seq, RX_INVALID_OPERATION, ESHUTDOWN);
                skb->mark = RXRPC_SKB_MARK_LOCAL_ABORT;
                skb->priority = RX_INVALID_OPERATION;
@@ -635,6 +637,7 @@ out_discard:
  * @user_attach_call: Func to attach call to user_call_ID
  * @user_call_ID: The tag to attach to the preallocated call
  * @gfp: The allocation conditions.
+ * @debug_id: The tracing debug ID.
  *
  * Charge up the socket with preallocated calls, each with a user ID.  A
  * function should be provided to effect the attachment from the user's side.
@@ -645,7 +648,8 @@ out_discard:
 int rxrpc_kernel_charge_accept(struct socket *sock,
                               rxrpc_notify_rx_t notify_rx,
                               rxrpc_user_attach_call_t user_attach_call,
-                              unsigned long user_call_ID, gfp_t gfp)
+                              unsigned long user_call_ID, gfp_t gfp,
+                              unsigned int debug_id)
 {
        struct rxrpc_sock *rx = rxrpc_sk(sock->sk);
        struct rxrpc_backlog *b = rx->backlog;
@@ -655,6 +659,6 @@ int rxrpc_kernel_charge_accept(struct socket *sock,
 
        return rxrpc_service_prealloc_one(rx, b, notify_rx,
                                          user_attach_call, user_call_ID,
-                                         gfp);
+                                         gfp, debug_id);
 }
 EXPORT_SYMBOL(rxrpc_kernel_charge_accept);