|
@@ -77,16 +77,16 @@ static int tcf_csum_init(struct net *n, struct nlattr *nla, struct nlattr *est,
|
|
|
&csum_idx_gen, &csum_hash_info);
|
|
|
if (IS_ERR(pc))
|
|
|
return PTR_ERR(pc);
|
|
|
- p = to_tcf_csum(pc);
|
|
|
ret = ACT_P_CREATED;
|
|
|
} else {
|
|
|
- p = to_tcf_csum(pc);
|
|
|
- if (!ovr) {
|
|
|
- tcf_hash_release(pc, bind, &csum_hash_info);
|
|
|
+ if (bind)/* dont override defaults */
|
|
|
+ return 0;
|
|
|
+ tcf_hash_release(pc, bind, &csum_hash_info);
|
|
|
+ if (!ovr)
|
|
|
return -EEXIST;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
+ p = to_tcf_csum(pc);
|
|
|
spin_lock_bh(&p->tcf_lock);
|
|
|
p->tcf_action = parm->action;
|
|
|
p->update_flags = parm->update_flags;
|