From a7c13c340eb76c1b20580663e7ea2ad99b37022f Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski Date: Wed, 30 Mar 2022 15:14:56 -0500 Subject: [PATCH] multipath: return failure on an invalid remove command When "multipath -f" is run on a device that doesn't exist or isn't a multipath device, the command will not remove any device, but it will still return success. Multiple functions rely on _dm_flush_map() returning success when called with name that doesn't match any multipath device. So before calling _dm_flush_map(), call dm_is_mpath(), to check if the device exists and is a multipath device, and return failure if it's not. Signed-off-by: Benjamin Marzinski --- multipath/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/multipath/main.c b/multipath/main.c index 65ece83..743f3e0 100644 --- a/multipath/main.c +++ b/multipath/main.c @@ -1060,6 +1060,11 @@ main (int argc, char *argv[]) if (retries < 0) retries = conf->remove_retries; if (cmd == CMD_FLUSH_ONE) { + if (dm_is_mpath(dev) != 1) { + condlog(0, "%s is not a multipath device", dev); + r = RTVL_FAIL; + goto out; + } r = dm_suspend_and_flush_map(dev, retries) ? RTVL_FAIL : RTVL_OK; goto out; -- 2.33.0