net/sfc/base: check size of memory to read sensors data to
authorMartin Harvey <mharvey@solarflare.com>
Mon, 10 Sep 2018 09:33:15 +0000 (10:33 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 27 Sep 2018 23:41:02 +0000 (01:41 +0200)
Size of provided memory should be consistent with specified size.

Fixes: dfb3b1ce15f6 ("net/sfc/base: import monitors access via MCDI")
Cc: stable@dpdk.org
Signed-off-by: Martin Harvey <mharvey@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
drivers/net/sfc/base/mcdi_mon.c

index 93e6b1e..68bbc57 100644 (file)
@@ -194,6 +194,12 @@ efx_mcdi_read_sensors(
        uint8_t payload[MAX(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;
@@ -211,6 +217,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