Previously, the extra parameters will be ignored quietly, which is a bit
weird and confusing.
$ daxctl create-device region0
[
  {
    "chardev":"dax0.1",
    "size":268435456,
    "target_node":1,
    "align":2097152,
    "mode":"devdax"
  }
]
created 1 device

where above user would want to specify '-r region0'.

Check extra parameters starting from index 0 to ensure no extra parameters
are specified for create-device.

Cc: Fan Ni <fan...@samsung.com>
Signed-off-by: Li Zhijian <lizhij...@fujitsu.com>
---
V2:
Remove the external link[0] in case it get disappeared in the future.
[0] 
https://github.com/moking/moking.github.io/wiki/cxl%E2%80%90test%E2%80%90tool:-A-tool-to-ease-CXL-test-with-QEMU-setup%E2%80%90%E2%80%90Using-DCD-test-as-an-example#convert-dcd-memory-to-system-ram
---
 daxctl/device.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/daxctl/device.c b/daxctl/device.c
index 839134301409..ffabd6cf5707 100644
--- a/daxctl/device.c
+++ b/daxctl/device.c
@@ -363,7 +363,8 @@ static const char *parse_device_options(int argc, const 
char **argv,
                NULL
        };
        unsigned long long units = 1;
-       int i, rc = 0;
+       int rc = 0;
+       int i = action == ACTION_CREATE ? 0 : 1;
        char *device = NULL;
 
        argc = parse_options(argc, argv, options, u, 0);
@@ -402,7 +403,7 @@ static const char *parse_device_options(int argc, const 
char **argv,
                        action_string);
                rc = -EINVAL;
        }
-       for (i = 1; i < argc; i++) {
+       for (; i < argc; i++) {
                fprintf(stderr, "unknown extra parameter \"%s\"\n", argv[i]);
                rc = -EINVAL;
        }
-- 
2.29.2


Reply via email to