linux_dsm_epyc7002/include/net
Vlad Buslov c266f64dbf net: sched: protect block state with mutex
Currently, tcf_block doesn't use any synchronization mechanisms to protect
critical sections that manage lifetime of its chains. block->chain_list and
multiple variables in tcf_chain that control its lifetime assume external
synchronization provided by global rtnl lock. Converting chain reference
counting to atomic reference counters is not possible because cls API uses
multiple counters and flags to control chain lifetime, so all of them must
be synchronized in chain get/put code.

Use single per-block lock to protect block data and manage lifetime of all
chains on the block. Always take block->lock when accessing chain_list.
Chain get and put modify chain lifetime-management data and parent block's
chain_list, so take the lock in these functions. Verify block->lock state
with assertions in functions that expect to be called with the lock taken
and are called from multiple places. Take block->lock when accessing
filter_chain_list.

In order to allow parallel update of rules on single block, move all calls
to classifiers outside of critical sections protected by new block->lock.
Rearrange chain get and put functions code to only access protected chain
data while holding block lock:
- Rearrange code to only access chain reference counter and chain action
  reference counter while holding block lock.
- Extract code that requires block->lock from tcf_chain_destroy() into
  standalone tcf_chain_destroy() function that is called by
  __tcf_chain_put() in same critical section that changes chain reference
  counters.

Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-02-12 13:41:32 -05:00
..
9p
bluetooth Bluetooth: Errata Service Release 8, Erratum 3253 2018-10-14 10:25:47 +02:00
caif
iucv
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2019-02-08 15:00:17 -08:00
netns Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2019-01-28 19:38:33 -08:00
nfc
phonet
sctp sctp: add SCTP_FUTURE_ASOC and SCTP_CURRENT_ASSOC for SCTP_STREAM_SCHEDULER sockopt 2019-01-30 00:44:08 -08:00
tc_act net: Change TCA_ACT_* to TCA_ID_* to match that of TCA_ID_POLICE 2019-02-10 09:28:43 -08:00
6lowpan.h
act_api.h net: Change TCA_ACT_* to TCA_ID_* to match that of TCA_ID_POLICE 2019-02-10 09:28:43 -08:00
addrconf.h bridge: Snoop Multicast Router Advertisements 2019-01-22 17:18:09 -08:00
af_ieee802154.h
af_rxrpc.h Revert "rxrpc: Allow failed client calls to be retried" 2019-01-15 21:33:36 -08:00
af_unix.h net: drop a space before tabs 2018-10-31 12:37:12 -07:00
af_vsock.h
ah.h
arp.h
atmclip.h
ax25.h ax25: fix possible use-after-free 2019-01-23 11:18:00 -08:00
ax88796.h
bond_3ad.h bonding: count master 3ad stats separately 2019-01-24 22:18:48 -08:00
bond_alb.h
bond_options.h
bonding.h
busy_poll.h
calipso.h
cfg80211-wext.h
cfg80211.h cfg80211: add missing documentation that kernel-doc warns about 2019-02-01 11:53:15 +01:00
cfg802154.h
checksum.h Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
cipso_ipv4.h
cls_cgroup.h
codel_impl.h
codel_qdisc.h
codel.h
compat.h
datalink.h
dcbevent.h
dcbnl.h
devlink.h Revert "devlink: Add a generic wake_on_lan port parameter" 2019-02-12 12:13:22 -05:00
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dn.h
dsa.h net: dsa: Split platform data to header file 2019-01-17 11:31:24 -08:00
dsfield.h
dst_cache.h
dst_metadata.h
dst_ops.h
dst.h geneve, vxlan: Don't set exceptions if skb->len < mtu 2018-10-17 21:51:13 -07:00
erspan.h
esp.h
ethoc.h
failover.h
fib_notifier.h
fib_rules.h
firewire.h
flow_dissector.h net/flow_dissector: correct comments on enum flow_dissector_key_id 2018-11-30 13:21:52 -08:00
flow_offload.h flow_offload: Fix flow action infrastructure 2019-02-11 21:30:14 -08:00
flow.h net: reorder flowi_common fields to avoid holes 2018-11-30 17:12:39 -08:00
fou.h
fq_impl.h
fq.h
garp.h
gen_stats.h net: align gnet_stats_basic_cpu struct 2018-11-17 21:37:29 -08:00
genetlink.h
geneve.h net: add netif_is_geneve() 2018-11-07 23:00:23 -08:00
gre.h net: Add netif_is_gretap()/netif_is_ip6gretap() 2018-12-10 15:53:04 -08:00
gro_cells.h
gtp.h
gue.h
hwbm.h
icmp.h net: Convert protocol error handlers from void to int 2018-11-08 17:13:08 -08:00
ieee80211_radiotap.h
ieee802154_netdev.h
if_inet6.h net/ipv6: Add anycast addresses to a global hashtable 2018-11-02 23:54:56 -07:00
ife.h
ila.h
inet6_connection_sock.h
inet6_hashtables.h net: allow binding socket in a VRF when there's an unbound socket 2018-11-07 16:12:38 -08:00
inet_common.h net: use indirect call wrappers at GRO transport layer 2018-12-15 13:23:02 -08:00
inet_connection_sock.h tcp: change pingpong threshold to 3 2019-01-27 13:29:43 -08:00
inet_ecn.h inet: Refactor INET_ECN_decapsulate() 2018-10-17 17:45:07 -07:00
inet_frag.h net: IP defrag: encapsulate rbtree defrag code into callable functions 2019-01-25 21:37:11 -08:00
inet_hashtables.h net: dccp: fix kernel crash on module load 2018-12-24 15:27:56 -08:00
inet_sock.h net: ensure unbound stream socket to be chosen when not in a VRF 2018-11-07 16:12:38 -08:00
inet_timewait_sock.h
inetpeer.h
ip6_checksum.h
ip6_fib.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-10-19 11:03:06 -07:00
ip6_route.h net: Add struct for fib dump filter 2018-10-16 00:13:12 -07:00
ip6_tunnel.h udp: Support for error handlers of tunnels with arbitrary destination port 2018-11-08 17:13:08 -08:00
ip_fib.h net: ipv4: Fix memory leak in network namespace dismantle 2019-01-15 13:33:44 -08:00
ip_tunnels.h ip_tunnel: Add tnl_update_pmtu in ip_md_tunnel_xmit 2019-01-26 09:43:03 -08:00
ip_vs.h ipvs: avoid indirect calls when calculating checksums 2019-01-28 11:15:58 +01:00
ip.h ip: factor out protocol delivery helper 2018-11-07 16:23:05 -08:00
ipcomp.h
ipconfig.h
ipv6_frag.h net: IP6 defrag: use rbtrees for IPv6 defrag 2019-01-25 21:37:11 -08:00
ipv6.h ipv6: factor out protocol delivery helper 2018-11-07 16:23:05 -08:00
ipx.h
iw_handler.h
kcm.h
l3mdev.h ipvlan, l3mdev: fix broken l3s mode wrt local routes 2019-01-30 22:13:34 -08:00
lag.h
lapb.h
lib80211.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
llc.h
lwtunnel.h
mac80211.h mac80211: fix missing/malformed documentation 2019-02-01 12:11:13 +01:00
mac802154.h
mip6.h
mld.h
mpls_iptunnel.h
mpls.h
mrp.h
ncsi.h
ndisc.h
neighbour.h neighbour: register rtnl doit handler 2018-12-19 13:37:34 -08:00
net_failover.h
net_namespace.h net: xsk: track AF_XDP sockets on a per-netns list 2019-01-25 01:50:03 +01:00
net_ratelimit.h
netevent.h
netlabel.h
netlink.h netlink: reduce NLA_POLICY_NESTED{,_ARRAY} arguments 2019-02-01 11:06:55 +01:00
netprio_cgroup.h
netrom.h
nexthop.h
nl802154.h
nsh.h
p8022.h
page_pool.h
ping.h
pkt_cls.h cls_flower: don't expose TC actions to drivers anymore 2019-02-06 10:38:26 -08:00
pkt_sched.h
pptp.h
protocol.h net: Convert protocol error handlers from void to int 2018-11-08 17:13:08 -08:00
psample.h
psnap.h
raw.h net: fix raw socket lookup device bind matching with VRFs 2018-11-07 16:12:39 -08:00
rawv6.h
red.h
regulatory.h
request_sock.h
rose.h
route.h
rsi_91x.h
rtnetlink.h net: Add extack argument to rtnl_create_link 2018-11-06 15:00:45 -08:00
sch_generic.h net: sched: protect block state with mutex 2019-02-12 13:41:32 -05:00
scm.h
secure_seq.h
seg6_hmac.h
seg6_local.h
seg6.h net: seg6.h: remove an unused #include 2018-12-20 16:56:04 -08:00
slhc_vj.h
smc.h
snmp.h
sock_reuseport.h
sock.h socket: Add SO_TIMESTAMP[NS]_NEW 2019-02-03 11:17:31 -08:00
Space.h
stp.h
strparser.h
switchdev.h net: Get rid of SWITCHDEV_ATTR_ID_PORT_PARENT_ID 2019-02-06 14:17:03 -08:00
tcp_states.h
tcp.h tcp: allow zerocopy with fastopen 2019-01-25 22:41:08 -08:00
timewait_sock.h
tipc.h
tls.h net: tls: Set async_capable for tls zerocopy only if we see EINPROGRESS 2019-02-01 15:05:07 -08:00
transp_v6.h
tso.h
tun_proto.h
udp_tunnel.h udp_tunnel: add config option to bind to a device 2018-12-03 14:15:26 -08:00
udp.h net: Convert protocol error handlers from void to int 2018-11-08 17:13:08 -08:00
udplite.h
vsock_addr.h
vxlan.h vxlan: Add extack to switchdev operations 2019-01-17 15:18:47 -08:00
wext.h
wimax.h
x25.h
x25device.h
xdp_sock.h xsk: add id to umem 2019-01-25 01:50:03 +01:00
xdp.h
xfrm.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-12-20 11:53:36 -08:00