Skip to content

Commit b3d26c5

Browse files
markovicbudimirkuba-moo
authored andcommitted
net/sched: sch_hfsc: Ensure inner classes have fsc curve
HFSC assumes that inner classes have an fsc curve, but it is currently possible for classes without an fsc curve to become parents. This leads to bugs including a use-after-free. Don't allow non-root classes without HFSC_FSC to become parents. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Reported-by: Budimir Markovic <markovicbudimir@gmail.com> Signed-off-by: Budimir Markovic <markovicbudimir@gmail.com> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Link: https://lore.kernel.org/r/20230824084905.422-1-markovicbudimir@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent c4413a2 commit b3d26c5

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

net/sched/sch_hfsc.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1012,6 +1012,10 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
10121012
if (parent == NULL)
10131013
return -ENOENT;
10141014
}
1015+
if (!(parent->cl_flags & HFSC_FSC) && parent != &q->root) {
1016+
NL_SET_ERR_MSG(extack, "Invalid parent - parent class must have FSC");
1017+
return -EINVAL;
1018+
}
10151019

10161020
if (classid == 0 || TC_H_MAJ(classid ^ sch->handle) != 0)
10171021
return -EINVAL;

0 commit comments

Comments
 (0)