|
@@ -236,7 +236,9 @@ int __nf_ct_try_assign_helper(struct nf_conn *ct, struct nf_conn *tmpl,
|
|
|
/* We only allow helper re-assignment of the same sort since
|
|
/* We only allow helper re-assignment of the same sort since
|
|
|
* we cannot reallocate the helper extension area.
|
|
* we cannot reallocate the helper extension area.
|
|
|
*/
|
|
*/
|
|
|
- if (help->helper != helper) {
|
|
|
|
|
|
|
+ struct nf_conntrack_helper *tmp = rcu_dereference(help->helper);
|
|
|
|
|
+
|
|
|
|
|
+ if (tmp && tmp->help != helper->help) {
|
|
|
RCU_INIT_POINTER(help->helper, NULL);
|
|
RCU_INIT_POINTER(help->helper, NULL);
|
|
|
goto out;
|
|
goto out;
|
|
|
}
|
|
}
|