From: Paolo Abeni <pab...@redhat.com> Date: Tue, 25 Jul 2017 17:57:47 +0200
> Paul Moore reported a SELinux/IP_PASSSEC regression > caused by missing skb->sp at recvmsg() time. We need to > preserve the skb head state to process the IP_CMSG_PASSSEC > cmsg. > > With this commit we avoid releasing the skb head state in the > BH even if a secpath is attached to the current skb, and stores > the skb status (with/without head states) in the scratch area, > so that we can access it at skb deallocation time, without > incurring in cache-miss penalties. > > This also avoids misusing the skb CB for ipv6 packets, > as introduced by the commit 0ddf3fb2c43d ("udp: preserve > skb->dst if required for IP options processing"). > > Clean a bit the scratch area helpers implementation, to > reduce the code differences between 32 and 64 bits build. > > Reported-by: Paul Moore <p...@paul-moore.com> > Fixes: 0a463c78d25b ("udp: avoid a cache miss on dequeue") > Fixes: 0ddf3fb2c43d ("udp: preserve skb->dst if required for IP options > processing") > Signed-off-by: Paolo Abeni <pab...@redhat.com> > Tested-by: Paul Moore <p...@paul-moore.com> Applied, thanks for tracking this down and fixing it.