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

Reply via email to