The PF will check buffer size for being too big, and the chunk sizing code
correctly calls that out. However, the size was actually still too big
because `struct virtchnl_queue_vector_maps` already had one queue vector
as part of its definition, so `chunk_sz` was too big by 1.
Fixes: 292d3b781ac4 ("net/iavf: replace unnecessary hugepage memory
allocations")
Signed-off-by: Anatoly Burakov <[email protected]>
---
drivers/net/intel/iavf/iavf_vchnl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/intel/iavf/iavf_vchnl.c
b/drivers/net/intel/iavf/iavf_vchnl.c
index c2f340db81..dd09b0fa61 100644
--- a/drivers/net/intel/iavf/iavf_vchnl.c
+++ b/drivers/net/intel/iavf/iavf_vchnl.c
@@ -1528,7 +1528,7 @@ iavf_config_irq_map_lv_chunk(struct iavf_adapter *adapter,
/* for some reason PF side checks for buffer being too big, so adjust
it down */
buf_len = sizeof(struct virtchnl_queue_vector_maps) +
- sizeof(struct virtchnl_queue_vector) * chunk_sz;
+ sizeof(struct virtchnl_queue_vector) * (chunk_sz - 1);
args.ops = VIRTCHNL_OP_MAP_QUEUE_VECTOR;
args.in_args = (u8 *)map_info;
--
2.47.3