android_kernel_xiaomi_sm8350/net
Pedro Tammela f34916502d net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve
commit a13b67c9a015c4e21601ef9aa4ec9c5d972df1b4 upstream.

Christian Theune says:
   I upgraded from 6.1.38 to 6.1.55 this morning and it broke my traffic shaping script,
   leaving me with a non-functional uplink on a remote router.

A 'rt' curve cannot be used as a inner curve (parent class), but we were
allowing such configurations since the qdisc was introduced. Such
configurations would trigger a UAF as Budimir explains:
   The parent will have vttree_insert() called on it in init_vf(),
   but will not have vttree_remove() called on it in update_vf()
   because it does not have the HFSC_FSC flag set.

The qdisc always assumes that inner classes have the HFSC_FSC flag set.
This is by design as it doesn't make sense 'qdisc wise' for an 'rt'
curve to be an inner curve.

Budimir's original patch disallows users to add classes with a 'rt'
parent, but this is too strict as it breaks users that have been using
'rt' as a inner class. Another approach, taken by this patch, is to
upgrade the inner 'rt' into a 'sc', warning the user in the process.
It avoids the UAF reported by Budimir while also being more permissive
to bad scripts/users/code using 'rt' as a inner class.

Users checking the `tc class ls [...]` or `tc class get [...]` dumps would
observe the curve change and are potentially breaking with this change.

v1->v2: https://lore.kernel.org/all/20231013151057.2611860-1-pctammela@mojatatu.com/
- Correct 'Fixes' tag and merge with revert (Jakub)

Cc: Christian Theune <ct@flyingcircus.io>
Cc: Budimir Markovic <markovicbudimir@gmail.com>
Fixes: b3d26c5702c7 ("net/sched: sch_hfsc: Ensure inner classes have fsc curve")
Signed-off-by: Pedro Tammela <pctammela@mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://lore.kernel.org/r/20231017143602.3191556-1-pctammela@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-10-25 11:53:21 +02:00
..
6lowpan
9p 9p: virtio: make sure 'offs' is initialized in zc_request 2023-09-23 10:59:37 +02:00
802
8021q vlan: fix a potential uninit-value in vlan_dev_hard_start_xmit() 2023-05-30 12:44:06 +01:00
appletalk
atm atm: hide unused procfs functions 2023-06-09 10:28:59 +02:00
ax25
batman-adv batman-adv: Hold rtnl lock during MTU update via netlink 2023-08-30 16:27:25 +02:00
bluetooth Bluetooth: avoid memcmp() out of bounds warning 2023-10-25 11:53:20 +02:00
bpf
bpfilter
bridge net: bridge: use DEV_STATS_INC() 2023-10-10 21:46:37 +02:00
caif
can can: bcm: Fix UAF in bcm_proc_show() 2023-07-27 08:37:40 +02:00
ceph libceph: use kernel_connect() 2023-10-25 11:53:19 +02:00
core net: fix possible store tearing in neigh_periodic_work() 2023-10-10 21:46:44 +02:00
dcb net: dcb: choose correct policy to parse DCB_ATTR_BCN 2023-08-11 11:53:57 +02:00
dccp dccp: fix dccp_v4_err()/dccp_v6_err() again 2023-10-10 21:46:37 +02:00
decnet Remove DECnet support from kernel 2023-06-21 15:44:10 +02:00
dns_resolver
dsa net: dsa: tag_sja1105: fix MAC DA patching from meta frames 2023-07-27 08:37:24 +02:00
ethernet
hsr
ieee802154
ife
ipv4 ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr 2023-10-25 11:53:21 +02:00
ipv6 net: ipv6: fix return value check in esp_remove_trailer 2023-10-25 11:53:21 +02:00
iucv
kcm kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). 2023-09-23 11:00:02 +02:00
key net: af_key: fix sadb_x_filter validation 2023-08-30 16:27:16 +02:00
l2tp ipv4, ipv6: Fix handling of transhdrlen in __ip{,6}_append_data() 2023-10-10 21:46:44 +02:00
l3mdev
lapb
llc llc: Don't drop packet from non-root netns. 2023-07-27 08:37:44 +02:00
mac80211
mac802154
mpls
ncsi ncsi: Propagate carrier gain/loss events to the NCSI controller 2023-10-10 21:46:40 +02:00
netfilter netfilter: nft_payload: fix wrong mac header matching 2023-10-25 11:53:21 +02:00
netlabel netlabel: fix shift wrapping bug in netlbl_catmap_setlong() 2023-09-23 10:59:39 +02:00
netlink netlink: Add __sock_i_ino() for __netlink_diag_dump(). 2023-07-27 08:37:12 +02:00
netrom netrom: Deny concurrent connect(). 2023-09-23 10:59:43 +02:00
nfc nfc: nci: fix possible NULL pointer dereference in send_acknowledge() 2023-10-25 11:53:20 +02:00
nsh net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment() 2023-05-30 12:44:05 +01:00
openvswitch
packet net/packet: annotate data-races around tp->status 2023-08-16 18:19:23 +02:00
phonet
psample
qrtr
rds net: prevent address rewrite in kernel_bind() 2023-10-25 11:53:18 +02:00
rfkill net: rfkill: gpio: prevent value glitch during probe 2023-10-25 11:53:21 +02:00
rose
rxrpc rxrpc: Fix hard call timeout units 2023-05-17 11:35:59 +02:00
sched net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve 2023-10-25 11:53:21 +02:00
sctp sctp: update hb timer immediately after users change hb_interval 2023-10-10 21:46:45 +02:00
smc
strparser
sunrpc SUNRPC: Mark the cred for revalidation if the server rejects it 2023-10-10 21:46:35 +02:00
switchdev
tipc net: tipc: resize nlattr array to correct size 2023-06-21 15:44:12 +02:00
tls net/tls: do not free tls_rec on async operation in bpf_exec_tx_verdict() 2023-09-23 11:00:02 +02:00
unix af_unix: Fix data-race around unix_tot_inflight. 2023-09-23 10:59:58 +02:00
vmw_vsock vsock: avoid to close connected socket after the timeout 2023-05-30 12:44:05 +01:00
wimax
wireless wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point() 2023-07-27 08:37:42 +02:00
x25
xdp xsk: Honor SO_BINDTODEVICE on bind 2023-07-27 08:37:23 +02:00
xfrm xfrm: interface: use DEV_STATS_INC() 2023-10-25 11:53:21 +02:00
compat.c
Kconfig Remove DECnet support from kernel 2023-06-21 15:44:10 +02:00
Makefile Remove DECnet support from kernel 2023-06-21 15:44:10 +02:00
socket.c net: prevent address rewrite in kernel_bind() 2023-10-25 11:53:18 +02:00
sysctl_net.c