When oo_clone() fails, the new object is freed. Make sure 'dst'
does not own parts of 'src'.
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
dst->tc_link = src->tc_link;
}
+ dst->tc_opts = NULL;
+ dst->tc_xstats = NULL;
+ dst->tc_subdata = NULL;
+ dst->ce_mask &= ~(TCA_ATTR_OPTS |
+ TCA_ATTR_XSTATS);
+
if (src->tc_opts) {
dst->tc_opts = nl_data_clone(src->tc_opts);
if (!dst->tc_opts)
return -NLE_NOMEM;
+ dst->ce_mask |= TCA_ATTR_OPTS;
}
-
+
if (src->tc_xstats) {
dst->tc_xstats = nl_data_clone(src->tc_xstats);
if (!dst->tc_xstats)
return -NLE_NOMEM;
+ dst->ce_mask |= TCA_ATTR_XSTATS;
}
if (src->tc_subdata) {