Hillf Danton <hdan...@sina.com> wrote: > > + /* Unshare the packet so that it can be modified for in-place > > + * decryption. > > + */ > > + if (sp->hdr.securityIndex != 0) { > > + struct sk_buff *nskb = skb_unshare(skb, GFP_ATOMIC); > > + if (!nskb) { > > + rxrpc_eaten_skb(skb, rxrpc_skb_unshared_nomem); > > + goto out; > > + } > > + > > + if (nskb != skb) { > > + rxrpc_eaten_skb(skb, rxrpc_skb_received); > > + rxrpc_new_skb(skb, rxrpc_skb_unshared); > > + skb = nskb; > > + sp = rxrpc_skb(skb); > > + } > > + } > > Unsharing skb makes it perilous to take a peep at it afterwards.
Ah, good point. rxrpc_new_skb() should be after the assignment. David