New upstream version 17.11.5
[deb_dpdk.git] / drivers / net / sfc / base / mcdi_mon.c
index c5360c3..8fb4113 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "efx.h"
 #include "efx_impl.h"
+#include "mcdi_mon.h"
 
 #if EFSYS_OPT_MON_MCDI
 
@@ -314,9 +315,15 @@ efx_mcdi_read_sensors(
        __in            uint32_t size)
 {
        efx_mcdi_req_t req;
-       uint8_t payload[MAX(MC_CMD_READ_SENSORS_EXT_IN_LEN,
-                           MC_CMD_READ_SENSORS_EXT_OUT_LEN)];
+       EFX_MCDI_DECLARE_BUF(payload, MC_CMD_READ_SENSORS_EXT_IN_LEN,
+               MC_CMD_READ_SENSORS_EXT_OUT_LEN);
        uint32_t addr_lo, addr_hi;
+       efx_rc_t rc;
+
+       if (EFSYS_MEM_SIZE(esmp) < size) {
+               rc = EINVAL;
+               goto fail1;
+       }
 
        req.emr_cmd = MC_CMD_READ_SENSORS;
        req.emr_in_buf = payload;
@@ -334,6 +341,11 @@ efx_mcdi_read_sensors(
        efx_mcdi_execute(enp, &req);
 
        return (req.emr_rc);
+
+fail1:
+       EFSYS_PROBE1(fail1, efx_rc_t, rc);
+
+       return (rc);
 }
 
 static __checkReturn   efx_rc_t
@@ -342,8 +354,8 @@ efx_mcdi_sensor_info_npages(
        __out           uint32_t *npagesp)
 {
        efx_mcdi_req_t req;
-       uint8_t payload[MAX(MC_CMD_SENSOR_INFO_EXT_IN_LEN,
-                           MC_CMD_SENSOR_INFO_OUT_LENMAX)];
+       EFX_MCDI_DECLARE_BUF(payload, MC_CMD_SENSOR_INFO_EXT_IN_LEN,
+               MC_CMD_SENSOR_INFO_OUT_LENMAX);
        int page;
        efx_rc_t rc;
 
@@ -386,8 +398,8 @@ efx_mcdi_sensor_info(
        __in                    size_t npages)
 {
        efx_mcdi_req_t req;
-       uint8_t payload[MAX(MC_CMD_SENSOR_INFO_EXT_IN_LEN,
-                           MC_CMD_SENSOR_INFO_OUT_LENMAX)];
+       EFX_MCDI_DECLARE_BUF(payload, MC_CMD_SENSOR_INFO_EXT_IN_LEN,
+               MC_CMD_SENSOR_INFO_OUT_LENMAX);
        uint32_t page;
        efx_rc_t rc;