From: Jakub Kicinski Date: Wed, 20 Nov 2019 17:56:06 +0000 (-0800) Subject: devlink: fix requiring either handle X-Git-Tag: v5.5.0~53 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=668bd8d35664d745656474ae623af8e2c9ebe99b;p=thirdparty%2Fiproute2.git devlink: fix requiring either handle 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 Fixes: 1896b100af46 ("devlink: catch missing strings in dl_args_required") Signed-off-by: Jakub Kicinski Reviewed-by: Quentin Monnet Tested-by: Shalom Toledo Acked-by: Jiri Pirko Signed-off-by: David Ahern --- diff --git a/devlink/devlink.c b/devlink/devlink.c index ea3f992ee..0b8985f32 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -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);