* [PATCH] tc: fix batch force option
@ 2018-06-20 7:24 Vlad Buslov
2018-06-20 16:33 ` Stephen Hemminger
0 siblings, 1 reply; 2+ messages in thread
From: Vlad Buslov @ 2018-06-20 7:24 UTC (permalink / raw)
To: netdev; +Cc: chrism, Vlad Buslov
When sending accumulated compound command results an error, check 'force'
option before exiting. Move return code check after putting batch bufs and
freeing iovs to prevent memory leak. Break from loop, instead of returning
error code to allow cleanup at the end of batch function. Don't reset ret
code on each iteration.
Fixes: 485d0c6001c4 ("tc: Add batchsize feature for filter and actions")
Reviewed-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Chris Mi <chrism@mellanox.com>
Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
---
tc/tc.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/tc/tc.c b/tc/tc.c
index 0d223281ba25..62d54186ec66 100644
--- a/tc/tc.c
+++ b/tc/tc.c
@@ -331,6 +331,7 @@ static int batch(const char *name)
int batchsize = 0;
size_t len = 0;
int ret = 0;
+ int err;
bool send;
batch_mode = 1;
@@ -399,9 +400,9 @@ static int batch(const char *name)
continue; /* blank line */
}
- ret = do_cmd(largc, largv, tail == NULL ? NULL : tail->buf,
+ err = do_cmd(largc, largv, tail == NULL ? NULL : tail->buf,
tail == NULL ? 0 : sizeof(tail->buf));
- if (ret != 0) {
+ if (err != 0) {
fprintf(stderr, "Command failed %s:%d\n", name,
cmdlineno - 1);
ret = 1;
@@ -423,15 +424,17 @@ static int batch(const char *name)
iov->iov_len = n->nlmsg_len;
}
- ret = rtnl_talk_iov(&rth, iovs, batchsize, NULL);
- if (ret < 0) {
+ err = rtnl_talk_iov(&rth, iovs, batchsize, NULL);
+ put_batch_bufs(&buf_pool, &head, &tail);
+ free(iovs);
+ if (err < 0) {
fprintf(stderr, "Command failed %s:%d\n", name,
- cmdlineno - (batchsize + ret) - 1);
- return 2;
+ cmdlineno - (batchsize + err) - 1);
+ ret = 1;
+ if (!force)
+ break;
}
- put_batch_bufs(&buf_pool, &head, &tail);
batchsize = 0;
- free(iovs);
}
} while (!lastline);
--
2.7.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] tc: fix batch force option
2018-06-20 7:24 [PATCH] tc: fix batch force option Vlad Buslov
@ 2018-06-20 16:33 ` Stephen Hemminger
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Hemminger @ 2018-06-20 16:33 UTC (permalink / raw)
To: Vlad Buslov; +Cc: netdev, chrism
On Wed, 20 Jun 2018 10:24:21 +0300
Vlad Buslov <vladbu@mellanox.com> wrote:
> When sending accumulated compound command results an error, check 'force'
> option before exiting. Move return code check after putting batch bufs and
> freeing iovs to prevent memory leak. Break from loop, instead of returning
> error code to allow cleanup at the end of batch function. Don't reset ret
> code on each iteration.
>
> Fixes: 485d0c6001c4 ("tc: Add batchsize feature for filter and actions")
> Reviewed-by: Roi Dayan <roid@mellanox.com>
> Reviewed-by: Chris Mi <chrism@mellanox.com>
> Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Applied
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-06-20 16:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-20 7:24 [PATCH] tc: fix batch force option Vlad Buslov
2018-06-20 16:33 ` Stephen Hemminger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).