Use range checking facility of nla_policy to validate port type
attribute input value is valid or not.

Signed-off-by: Parav Pandit <pa...@nvidia.com>
Reviewed-by: Jiri Pirko <j...@nvidia.com>
---
 net/core/devlink.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/net/core/devlink.c b/net/core/devlink.c
index 4ecc68a9c7df..4494937df7eb 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -867,8 +867,6 @@ static int devlink_port_type_set(struct devlink *devlink,
        int err;
 
        if (devlink->ops->port_type_set) {
-               if (port_type == DEVLINK_PORT_TYPE_NOTSET)
-                       return -EINVAL;
                if (port_type == devlink_port->type)
                        return 0;
                err = devlink->ops->port_type_set(devlink_port, port_type);
@@ -7193,7 +7191,8 @@ static const struct nla_policy 
devlink_nl_policy[DEVLINK_ATTR_MAX + 1] = {
        [DEVLINK_ATTR_BUS_NAME] = { .type = NLA_NUL_STRING },
        [DEVLINK_ATTR_DEV_NAME] = { .type = NLA_NUL_STRING },
        [DEVLINK_ATTR_PORT_INDEX] = { .type = NLA_U32 },
-       [DEVLINK_ATTR_PORT_TYPE] = { .type = NLA_U16 },
+       [DEVLINK_ATTR_PORT_TYPE] = NLA_POLICY_RANGE(NLA_U16, 
DEVLINK_PORT_TYPE_AUTO,
+                                                   DEVLINK_PORT_TYPE_IB),
        [DEVLINK_ATTR_PORT_SPLIT_COUNT] = { .type = NLA_U32 },
        [DEVLINK_ATTR_SB_INDEX] = { .type = NLA_U32 },
        [DEVLINK_ATTR_SB_POOL_INDEX] = { .type = NLA_U16 },
-- 
2.26.2

Reply via email to