Subject: Re: [PATCH net 1/1 v3] net: sched: Disallow replacing of child qdisc from one parent to another

From: Jakub Kicinski <[email-masked]>
Date: Tue, 14 Jan 2025 17:26:20 -0800

On Sat, 11 Jan 2025 10:14:55 -0500 Jamal Hadi Salim wrote:
> The semantics of "replace" is for a del/add _on the same node_ and not
> a delete from one node(3:1) and add to another node (1:3) as in step10.
> While we could "fix" with a more complex approach there could be
> consequences to expectations so the patch takes the preventive approach of
> "disallow such config".

Your explanation reads like you want to prevent a qdisc changing
from one parent to another.

> +				if (leaf_q && leaf_q->parent != q->parent) {
> +					NL_SET_ERR_MSG(extack, "Invalid Parent for operation");
> +					return -EINVAL;
> +				}

But this test looks at the full parent path, not the major.
So the only case you allow is replacing the node.. with itself?

Did you mean to wrap these in TC_H_MAJ() || the parent comparison 
is redundant || I misunderstand?