This series introduce the infrastructure to store inside the skb a socket pointer without carrying a refcount to the socket.
Such infrastructure is then used in the network receive path - and specifically the early demux operation. This allows the UDP early demux to perform a full lookup for UDP sockets, with many benefits: - the UDP early demux code is now much simpler - the early demux does not hit any performance penalties in case of UDP hash table collision - previously the early demux performed a partial, unsuccesful, lookup - early demux is now operational also for unconnected sockets. This infrastrcture will be used in follow-up series to allow dst caching for unconnected UDP sockets, and than to extend the same features to TCP listening sockets. Paolo Abeni (5): net: add support for noref skb->sk net: allow early demux to fetch noref socket udp: do not touch socket refcount in early demux net: add simple socket-like dst cache helpers udp: perform full socket lookup in early demux include/linux/skbuff.h | 30 +++++++++++++++ include/linux/udp.h | 2 + include/net/dst.h | 12 ++++++ net/core/dst.c | 16 ++++++++ net/core/sock.c | 6 +++ net/ipv4/ip_input.c | 12 ++++++ net/ipv4/ipmr.c | 18 +++++++-- net/ipv4/netfilter/nf_dup_ipv4.c | 3 ++ net/ipv4/udp.c | 80 ++++++++++++++++------------------------ net/ipv6/ip6_input.c | 7 +++- net/ipv6/netfilter/nf_dup_ipv6.c | 3 ++ net/ipv6/udp.c | 67 ++++++++++----------------------- net/netfilter/nf_queue.c | 3 ++ 13 files changed, 159 insertions(+), 100 deletions(-) -- 2.13.5