be2net: Add privilege level check for OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES SLI...
authorSomnath Kotur <somnath.kotur@broadcom.com>
Wed, 7 Sep 2016 14:27:51 +0000 (19:57 +0530)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Sep 2016 05:44:55 +0000 (22:44 -0700)
Driver issues OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES cmd during init which
when issued by VFs results in the logging of a cmd failure message since
they don't have the required privilege for this cmd. Fix by checking
privilege before issuing the cmd.

Also fixed typo in CAPABILITIES.

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be_cmds.c
drivers/net/ethernet/emulex/benet/be_cmds.h

index 92794f3..15d02da 100644 (file)
@@ -92,6 +92,11 @@ static struct be_cmd_priv_map cmd_priv_map[] = {
                CMD_SUBSYSTEM_COMMON,
                BE_PRIV_DEVCFG | BE_PRIV_VHADM
        },
+       {
+               OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES,
+               CMD_SUBSYSTEM_COMMON,
+               BE_PRIV_DEVCFG
+       }
 };
 
 static bool be_cmd_allowed(struct be_adapter *adapter, u8 opcode, u8 subsystem)
@@ -4127,6 +4132,10 @@ int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter,
        struct be_cmd_req_get_ext_fat_caps *req;
        int status;
 
+       if (!be_cmd_allowed(adapter, OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES,
+                           CMD_SUBSYSTEM_COMMON))
+               return -EPERM;
+
        if (mutex_lock_interruptible(&adapter->mbox_lock))
                return -1;
 
@@ -4138,7 +4147,7 @@ int be_cmd_get_ext_fat_capabilites(struct be_adapter *adapter,
 
        req = cmd->va;
        be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
-                              OPCODE_COMMON_GET_EXT_FAT_CAPABILITES,
+                              OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES,
                               cmd->size, wrb, cmd);
        req->parameter_type = cpu_to_le32(1);
 
@@ -4167,7 +4176,7 @@ int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter,
        req = cmd->va;
        memcpy(&req->set_params, configs, sizeof(struct be_fat_conf_params));
        be_wrb_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
-                              OPCODE_COMMON_SET_EXT_FAT_CAPABILITES,
+                              OPCODE_COMMON_SET_EXT_FAT_CAPABILITIES,
                               cmd->size, wrb, cmd);
 
        status = be_mcc_notify_wait(adapter);
index 686cbe0..1bd82bc 100644 (file)
@@ -295,8 +295,8 @@ struct be_mcc_mailbox {
 #define OPCODE_COMMON_GET_PHY_DETAILS                  102
 #define OPCODE_COMMON_SET_DRIVER_FUNCTION_CAP          103
 #define OPCODE_COMMON_GET_CNTL_ADDITIONAL_ATTRIBUTES   121
-#define OPCODE_COMMON_GET_EXT_FAT_CAPABILITES          125
-#define OPCODE_COMMON_SET_EXT_FAT_CAPABILITES          126
+#define OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES         125
+#define OPCODE_COMMON_SET_EXT_FAT_CAPABILITIES         126
 #define OPCODE_COMMON_GET_MAC_LIST                     147
 #define OPCODE_COMMON_SET_MAC_LIST                     148
 #define OPCODE_COMMON_GET_HSW_CONFIG                   152