From: Manish Kurup <[email protected]>
Date: Wed, 1 Nov 2017 17:46:21 -0400
> - v->tcfv_push_proto = push_proto;
> + ASSERT_RTNL();
> + p = kzalloc(sizeof(*p), GFP_KERNEL);
> + if (!p) {
> + if (ovr)
> + tcf_idr_release(*a, bind);
> + return -ENOMEM;
> + }
>
> v->tcf_action = parm->action;
>
> - spin_unlock_bh(&v->tcf_lock);
> + p_old = rtnl_dereference(v->vlan_p);
> +
> + p->tcfv_action = action;
> + p->tcfv_push_vid = push_vid;
> + p->tcfv_push_prio = push_prio;
> + p->tcfv_push_proto = push_proto;
> +
> + rcu_assign_pointer(v->vlan_p, p);
> +
> + if (p_old)
> + kfree_rcu(p_old, rcu);
What frees this RCU memory when the VLAN action is destroyed?