From 27e5d9000c55d9e7c0257ff284159a642d269b40 Mon Sep 17 00:00:00 2001 From: Rahul Lakkireddy Date: Fri, 9 Nov 2018 13:26:28 +0530 Subject: [PATCH] net/cxgbevf: fix illegal memory access when freeing MPS TCAM Individual MPS TCAM entries are not allocated as separate entities. All entries are allocated once as an array. So, fix bug with attempting to free illegal memory location. Also add missing MPS TCAM initialization for CXGBEVF. Fixes: 6fda3f0ddda9 ("net/cxgbe: add API to program hardware MPS table") Signed-off-by: Rahul Lakkireddy --- drivers/net/cxgbe/cxgbevf_main.c | 6 ++++++ drivers/net/cxgbe/mps_tcam.c | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/net/cxgbe/cxgbevf_main.c b/drivers/net/cxgbe/cxgbevf_main.c index 6223e1250e..61bd85193a 100644 --- a/drivers/net/cxgbe/cxgbevf_main.c +++ b/drivers/net/cxgbe/cxgbevf_main.c @@ -11,6 +11,7 @@ #include "t4_regs.h" #include "t4_msg.h" #include "cxgbe.h" +#include "mps_tcam.h" /* * Figure out how many Ports and Queue Sets we can support. This depends on @@ -271,6 +272,11 @@ allocate_mac: print_adapter_info(adapter); print_port_info(adapter); + adapter->mpstcam = t4_init_mpstcam(adapter); + if (!adapter->mpstcam) + dev_warn(adapter, + "VF could not allocate mps tcam table. Continuing\n"); + err = init_rss(adapter); if (err) goto out_free; diff --git a/drivers/net/cxgbe/mps_tcam.c b/drivers/net/cxgbe/mps_tcam.c index 02ec69a922..71c8070b3e 100644 --- a/drivers/net/cxgbe/mps_tcam.c +++ b/drivers/net/cxgbe/mps_tcam.c @@ -236,8 +236,6 @@ struct mpstcam_table *t4_init_mpstcam(struct adapter *adap) void t4_cleanup_mpstcam(struct adapter *adap) { - if (adap->mpstcam) { - t4_os_free(adap->mpstcam->entry); + if (adap->mpstcam) t4_os_free(adap->mpstcam); - } } -- 2.20.1