]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
devlink: fix requiring either handle
authorJakub Kicinski <jakub.kicinski@netronome.com>
Wed, 20 Nov 2019 17:56:06 +0000 (09:56 -0800)
committerDavid Ahern <dsahern@gmail.com>
Thu, 21 Nov 2019 21:38:52 +0000 (21:38 +0000)
devlink sb occupancy show requires device or port handle.
It passes both device and port handle bits as required to
dl_argv_parse() so since commit 1896b100af46 ("devlink: catch
missing strings in dl_args_required") devlink will now
complain that only one is present:

$ devlink sb occupancy show pci/0000:06:00.0/0
BUG: unknown argument required but not found

Drop the bit for the handle which was not found from required.

Reported-by: Shalom Toledo <shalomt@mellanox.com>
Fixes: 1896b100af46 ("devlink: catch missing strings in dl_args_required")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com>
Tested-by: Shalom Toledo <shalomt@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
devlink/devlink.c

index ea3f992ee0d74e6ca37ce28fc30cda9de30b229a..0b8985f32636a71b7ed1258cca284bf256c1a8f7 100644 (file)
@@ -1179,6 +1179,7 @@ static int dl_argv_parse(struct dl *dl, uint64_t o_required,
                                          &opts->port_index, &handle_bit);
                if (err)
                        return err;
+               o_required &= ~(DL_OPT_HANDLE | DL_OPT_HANDLEP) | handle_bit;
                o_found |= handle_bit;
        } else if (o_required & DL_OPT_HANDLE) {
                err = dl_argv_handle(dl, &opts->bus_name, &opts->dev_name);