diff --git a/lib/route/class.c b/lib/route/class.c index cdf4232..20b59ee 100644 --- a/lib/route/class.c +++ b/lib/route/class.c @@ -154,10 +154,11 @@ int rtnl_class_add(struct nl_sock *sk, struct rtnl_class *class, int flags) if ((err = rtnl_class_build_add_request(class, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } diff --git a/lib/route/classifier.c b/lib/route/classifier.c index 0f60358..9a2a9ac 100644 --- a/lib/route/classifier.c +++ b/lib/route/classifier.c @@ -169,10 +169,11 @@ int rtnl_cls_add(struct nl_sock *sk, struct rtnl_cls *cls, int flags) if ((err = rtnl_cls_build_add_request(cls, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } @@ -215,10 +216,11 @@ int rtnl_cls_change(struct nl_sock *sk, struct rtnl_cls *cls, int flags) if ((err = rtnl_cls_build_change_request(cls, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } @@ -262,10 +264,11 @@ int rtnl_cls_delete(struct nl_sock *sk, struct rtnl_cls *cls, int flags) if ((err = rtnl_cls_build_delete_request(cls, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } diff --git a/lib/route/link.c b/lib/route/link.c index 34bc83b..b894cab 100644 --- a/lib/route/link.c +++ b/lib/route/link.c @@ -1047,10 +1047,11 @@ int rtnl_link_change(struct nl_sock *sk, struct rtnl_link *old, if ((err = rtnl_link_build_change_request(old, tmpl, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } diff --git a/lib/route/neigh.c b/lib/route/neigh.c index adb1596..9541f20 100644 --- a/lib/route/neigh.c +++ b/lib/route/neigh.c @@ -653,10 +653,11 @@ int rtnl_neigh_add(struct nl_sock *sk, struct rtnl_neigh *tmpl, int flags) if ((err = rtnl_neigh_build_add_request(tmpl, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } @@ -708,10 +709,11 @@ int rtnl_neigh_delete(struct nl_sock *sk, struct rtnl_neigh *neigh, if ((err = rtnl_neigh_build_delete_request(neigh, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } @@ -767,10 +769,11 @@ int rtnl_neigh_change(struct nl_sock *sk, struct rtnl_neigh *neigh, int flags) if ((err = rtnl_neigh_build_change_request(neigh, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } diff --git a/lib/route/neightbl.c b/lib/route/neightbl.c index e58aef6..d34205a 100644 --- a/lib/route/neightbl.c +++ b/lib/route/neightbl.c @@ -590,10 +590,11 @@ int rtnl_neightbl_change(struct nl_sock *sk, struct rtnl_neightbl *old, if ((err = rtnl_neightbl_build_change_request(old, tmpl, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } diff --git a/lib/route/qdisc.c b/lib/route/qdisc.c index b23d72d..c8dd4d5 100644 --- a/lib/route/qdisc.c +++ b/lib/route/qdisc.c @@ -233,10 +233,11 @@ int rtnl_qdisc_add(struct nl_sock *sk, struct rtnl_qdisc *qdisc, if ((err = rtnl_qdisc_build_add_request(qdisc, flags, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } @@ -288,10 +289,11 @@ int rtnl_qdisc_change(struct nl_sock *sk, struct rtnl_qdisc *qdisc, if ((err = rtnl_qdisc_build_change_request(qdisc, new, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); } @@ -360,10 +362,11 @@ int rtnl_qdisc_delete(struct nl_sock *sk, struct rtnl_qdisc *qdisc) if ((err = rtnl_qdisc_build_delete_request(qdisc, &msg)) < 0) return err; - if ((err = nl_send_auto_complete(sk, msg)) < 0) + err = nl_send_auto_complete(sk, msg); + nlmsg_free(msg); + if (err < 0) return err; - nlmsg_free(msg); return nl_wait_for_ack(sk); }