/* * Release an skbuff after use */ static void svc_release_skb(struct svc_rqst *rqstp) { struct sk_buff *skb = rqstp->rq_xprt_ctxt; if (skb) { struct svc_sock *svsk = container_of(rqstp->rq_xprt, struct svc_sock, sk_xprt); rqstp->rq_xprt_ctxt = NULL; dprintk("svc: service %p, releasing skb %p\n", rqstp, skb); skb_free_datagram_locked(svsk->sk_sk, skb); } }
/* * Release an skbuff after use */ static inline void svc_release_skb(struct svc_rqst *rqstp) { struct sk_buff *skb = rqstp->rq_skbuff; struct svc_deferred_req *dr = rqstp->rq_deferred; if (skb) { rqstp->rq_skbuff = NULL; dprintk("svc: service %p, releasing skb %p\n", rqstp, skb); skb_free_datagram_locked(rqstp->rq_sock->sk_sk, skb); } if (dr) { rqstp->rq_deferred = NULL; kfree(dr); } }