android_kernel_google_msm/include/net
Lorenzo Colitti d3cd043531 net: core: Add a UID field to struct sock.
Protocol sockets (struct sock) don't have UIDs, but most of the
time, they map 1:1 to userspace sockets (struct socket) which do.

Various operations such as the iptables xt_owner match need
access to the "UID of a socket", and do so by following the
backpointer to the struct socket. This involves taking
sk_callback_lock and doesn't work when there is no socket
because userspace has already called close().

Simplify this by adding a sk_uid field to struct sock whose value
matches the UID of the corresponding struct socket. The semantics
are as follows:

1. Whenever sk_socket is non-null: sk_uid is the same as the UID
   in sk_socket, i.e., matches the return value of sock_i_uid.
   Specifically, the UID is set when userspace calls socket(),
   fchown(), or accept().
2. When sk_socket is NULL, sk_uid is defined as follows:
   - For a socket that no longer has a sk_socket because
     userspace has called close(): the previous UID.
   - For a cloned socket (e.g., an incoming connection that is
     established but on which userspace has not yet called
     accept): the UID of the socket it was cloned from.
   - For a socket that has never had an sk_socket: UID 0 inside
     the user namespace corresponding to the network namespace
     the socket belongs to.

Kernel sockets created by sock_create_kern are a special case
of #1 and sk_uid is the user that created them. For kernel
sockets created at network namespace creation time, such as the
per-processor ICMP and TCP sockets, this is the user that created
the network namespace.

[Backport of net-next 86741ec25462e4c8cdce6df2f41ead05568c7d5e]

Bug: 16355602
Change-Id: I73e1a57dfeedf672f4c2dfc9ce6867838b55974b
Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
2023-02-18 18:37:04 +01:00
..
9p
bluetooth Bluetooth: hidp: verify l2cap sockets 2018-01-13 17:14:28 +03:00
caif
irda
iucv af_iucv: add shutdown for HS transport 2012-03-07 22:52:24 -08:00
netfilter netfilter updates for net-next (batch 3) 2020-10-25 02:34:32 -04:00
netns Include uidgid.h in same header files as in newer kernels 2020-12-07 20:55:11 +03:00
nfc
phonet
sctp sctp: start t5 timer only when peer rwnd is 0 and local state is SHUTDOWN_PENDING 2016-10-26 23:15:35 +08:00
tc_act
act_api.h
activity_stats.h net: activity_stats: Add statistics for network transmission activity 2012-04-09 13:57:50 -07:00
addrconf.h netfilter: ip6tables: add MASQUERADE target 2018-12-07 22:02:09 +04:00
af_ieee802154.h
af_rxrpc.h
af_unix.h Merge remote-tracking branch 'stable/linux-3.4.y' into lineage-15.1 2017-12-27 17:13:15 +03:00
ah.h
arp.h
atmclip.h
ax25.h
ax88796.h
cfg80211-wext.h
cfg80211.h Merge remote-tracking branch 'stable/linux-3.4.y' into lineage-15.1 2017-12-27 17:13:15 +03:00
checksum.h net: core: add function for incremental IPv6 pseudo header checksum updates 2018-12-07 22:02:09 +04:00
cipso_ipv4.h net: fix cipso packet validation when !NETLABEL 2013-11-04 04:23:41 -08:00
cls_cgroup.h
compat.h net: get rid of some pointless casts to sockaddr 2012-03-11 19:11:22 -07:00
datalink.h
dcbevent.h
dcbnl.h
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsfield.h
dst.h xfrm: Add a state resolution packet queue 2020-11-30 19:39:27 +03:00
dst_ops.h
esp.h
ethoc.h
fib_rules.h net: core: add UID to flows, rules, and routes 2017-09-01 13:38:07 +03:00
flow.h ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif 2018-08-27 14:52:49 +00:00
flow_keys.h
garp.h
gen_stats.h
genetlink.h
gre.h
icmp.h
ieee80211_radiotap.h
ieee802154.h
ieee802154_netdev.h
if_inet6.h
inet6_connection_sock.h
inet6_hashtables.h ipv6: use a stronger hash for tcp 2013-09-25 17:01:33 +00:00
inet_common.h
inet_connection_sock.h inet: Fix kmemleak in tcp_v4/6_syn_recv_sock and dccp_v4/6_request_recv_sock 2013-01-11 09:07:14 -08:00
inet_ecn.h
inet_frag.h ipv4: fix path MTU discovery with connection tracking 2018-12-07 22:02:09 +04:00
inet_hashtables.h
inet_sock.h net: support marking accepting TCP sockets 2014-05-12 22:43:02 -07:00
inet_timewait_sock.h
inetpeer.h inetpeer: get rid of ip_id_count 2014-08-14 08:42:35 +08:00
ip.h ipv4: fix path MTU discovery with connection tracking 2018-12-07 22:02:09 +04:00
ip6_checksum.h
ip6_fib.h ipv6: fix handling of blackhole and prohibit routes 2016-10-26 23:15:43 +08:00
ip6_route.h ipv6: Handle PMTU in ICMP error handlers. 2021-01-23 17:16:44 +03:00
ip6_tunnel.h
ip_fib.h ipv4: fix definition of FIB_TABLE_HASHSZ 2013-03-28 12:11:53 -07:00
ip_vs.h ipvs: fix oops on NAT reply in br_nf context 2012-10-21 09:28:00 -07:00
ipcomp.h
ipconfig.h
ipip.h tunnel: implement 64 bits statistics 2020-11-30 19:26:33 +03:00
ipv6.h Merge remote-tracking branch 'stable/linux-3.4.y' into lineage-15.1 2017-12-27 17:13:15 +03:00
ipx.h
iw_handler.h
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL 2014-06-07 16:02:07 -07:00
mip6.h
mld.h
ndisc.h ipv6: don't call fib6_run_gc() until routing is ready 2016-10-26 23:15:43 +08:00
neighbour.h net: Do delayed neigh confirmation. 2017-09-01 13:38:10 +03:00
net_namespace.h ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif 2018-08-27 14:52:49 +00:00
net_ratelimit.h
netdma.h
netevent.h
netlabel.h
netlink.h netlink: Add nla_put_be{16,32,64}() helpers. 2018-12-07 21:59:38 +04:00
netprio_cgroup.h
netrom.h
nexthop.h
nl802154.h
p8022.h
ping.h Merge remote-tracking branch 'stable/linux-3.4.y' into lineage-15.1 2017-12-27 17:13:15 +03:00
pkt_cls.h
pkt_sched.h net: sched: export an api to enable/disable flow on sch 2013-03-07 15:20:04 -08:00
protocol.h
psnap.h
raw.h
rawv6.h
red.h net_sched: red: Make minor corrections to comments 2012-04-16 23:53:11 -04:00
regulatory.h regulatory: add NUL to alpha2 2014-12-01 18:02:22 +08:00
request_sock.h
rose.h
route.h Revert "net: core: Support UID-based routing." 2017-08-27 19:09:20 +03:00
rtnetlink.h
sch_generic.h bonding: Fix corrupted queue_mapping 2012-07-16 09:03:47 -07:00
scm.h Merge remote-tracking branch 'stable/linux-3.4.y' into lineage-15.1 2017-12-27 17:13:15 +03:00
secure_seq.h Merge remote-tracking branch 'stable/linux-3.4.y' into lineage-15.1 2017-12-27 17:13:15 +03:00
slhc_vj.h
snmp.h
sock.h net: core: Add a UID field to struct sock. 2023-02-18 18:37:04 +01:00
stp.h
tcp.h tcp: GSO should be TSQ friendly 2020-11-30 19:35:07 +03:00
tcp_memcontrol.h
tcp_states.h
timewait_sock.h
transp_v6.h net: ipv6: Add IPv6 support to the ping socket. 2013-08-21 13:34:09 +09:00
udp.h ipv6: call udp_push_pending_frames when uncorking a socket with AF_INET pending data 2013-07-28 16:26:02 -07:00
udplite.h net: ipv4: Standardize prefixes for message logging 2012-03-12 17:05:21 -07:00
wext.h
wimax.h
wpan-phy.h
x25.h
x25device.h
xfrm.h xfrm: remove redundant parameter "int dir" in struct xfrm_mgr.acquire 2020-12-06 13:59:24 +03:00