On Tue, 2016-08-30 at 07:57 -0400, Jamal Hadi Salim wrote:
>         rcu_assign_pointer(d->skbmod_p, p);
>         if (ovr) {
>                 spin_unlock_bh(&d->tcf_lock);
>                 synchronize_rcu();
>         }
> 
>         kfree(p_old);

Overall patch looks good Jamal, thanks.


synchronize_rcu() might bee to expensive if you plan to change actions
hundred of times per second.

You could instead add a 'struct rcu_head rcu;'  field in struct
tcf_skbmod_params  (but make sure this is not exported to user space)

Then :

        if (ovr)
                 spin_unlock_bh(&d->tcf_lock);
         kfree_rcu(p_old, rcu);


Reply via email to