git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/sfc: fix multicast address list copy memory leak
[dpdk.git]
/
drivers
/
net
/
sfc
/
base
/
mcdi_mon.c
diff --git
a/drivers/net/sfc/base/mcdi_mon.c
b/drivers/net/sfc/base/mcdi_mon.c
index
8ea4216
..
7e4264a
100644
(file)
--- a/
drivers/net/sfc/base/mcdi_mon.c
+++ b/
drivers/net/sfc/base/mcdi_mon.c
@@
-396,6
+396,11
@@
efx_mcdi_sensor_info(
EFSYS_ASSERT(sensor_maskp != NULL);
EFSYS_ASSERT(sensor_maskp != NULL);
+ if (npages < 1) {
+ rc = EINVAL;
+ goto fail1;
+ }
+
for (page = 0; page < npages; page++) {
uint32_t mask;
for (page = 0; page < npages; page++) {
uint32_t mask;
@@
-412,7
+417,7
@@
efx_mcdi_sensor_info(
if (req.emr_rc != 0) {
rc = req.emr_rc;
if (req.emr_rc != 0) {
rc = req.emr_rc;
- goto fail
1
;
+ goto fail
2
;
}
mask = MCDI_OUT_DWORD(req, SENSOR_INFO_OUT_MASK);
}
mask = MCDI_OUT_DWORD(req, SENSOR_INFO_OUT_MASK);
@@
-420,18
+425,20
@@
efx_mcdi_sensor_info(
if ((page != (npages - 1)) &&
((mask & (1U << MC_CMD_SENSOR_PAGE0_NEXT)) == 0)) {
rc = EINVAL;
if ((page != (npages - 1)) &&
((mask & (1U << MC_CMD_SENSOR_PAGE0_NEXT)) == 0)) {
rc = EINVAL;
- goto fail
2
;
+ goto fail
3
;
}
sensor_maskp[page] = mask;
}
if (sensor_maskp[npages - 1] & (1U << MC_CMD_SENSOR_PAGE0_NEXT)) {
rc = EINVAL;
}
sensor_maskp[page] = mask;
}
if (sensor_maskp[npages - 1] & (1U << MC_CMD_SENSOR_PAGE0_NEXT)) {
rc = EINVAL;
- goto fail
3
;
+ goto fail
4
;
}
return (0);
}
return (0);
+fail4:
+ EFSYS_PROBE(fail4);
fail3:
EFSYS_PROBE(fail3);
fail2:
fail3:
EFSYS_PROBE(fail3);
fail2: