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

Reply via email to