From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nathan Fontenot Subject: Re: [PATCH net v2 3/3] ibmvnic: Allocate and request vpd in init_resources Date: Fri, 19 Jan 2018 13:24:29 -0600 Message-ID: <8ddf6b5c-c1dd-d52f-adf2-f26ff6ae2f10@linux.vnet.ibm.com> References: <97de0d55-5b81-40f9-c3b8-0d28e4d80539@linux.vnet.ibm.com> <0a4000cd-dc0a-fe1c-0512-e0e74a9ef60b@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: Thomas Falcon To: John Allen , netdev@vger.kernel.org Return-path: Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:38126 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932152AbeASTYd (ORCPT ); Fri, 19 Jan 2018 14:24:33 -0500 Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w0JJOGkl069011 for ; Fri, 19 Jan 2018 14:24:33 -0500 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0a-001b2d01.pphosted.com with ESMTP id 2fkkhc058j-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 19 Jan 2018 14:24:32 -0500 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 19 Jan 2018 14:24:32 -0500 In-Reply-To: <0a4000cd-dc0a-fe1c-0512-e0e74a9ef60b@linux.vnet.ibm.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 01/18/2018 04:27 PM, John Allen wrote: > In reset events in which our memory allocations need to be reallocated, > VPD data is being freed, but never reallocated. This can cause issues if > we later attempt to access that memory or reset and attempt to free the > memory. This patch moves the allocation of the VPD data to init_resources > so that it will be symmetrically freed during release resources. > > Signed-off-by: John Allen Reviewed-by: Nathan Fontenot > --- > diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c > index bb56460..f0dbb76 100644 > --- a/drivers/net/ethernet/ibm/ibmvnic.c > +++ b/drivers/net/ethernet/ibm/ibmvnic.c > @@ -867,7 +867,7 @@ static int ibmvnic_get_vpd(struct ibmvnic_adapter *adapter) > if (adapter->vpd->buff) > len = adapter->vpd->len; > > - reinit_completion(&adapter->fw_done); > + init_completion(&adapter->fw_done); > crq.get_vpd_size.first = IBMVNIC_CRQ_CMD; > crq.get_vpd_size.cmd = GET_VPD_SIZE; > ibmvnic_send_crq(adapter, &crq); > @@ -929,6 +929,13 @@ static int init_resources(struct ibmvnic_adapter *adapter) > if (!adapter->vpd) > return -ENOMEM; > > + /* Vital Product Data (VPD) */ > + rc = ibmvnic_get_vpd(adapter); > + if (rc) { > + netdev_err(netdev, "failed to initialize Vital Product Data (VPD)\n"); > + return rc; > + } > + > adapter->map_id = 1; > adapter->napi = kcalloc(adapter->req_rx_queues, > sizeof(struct napi_struct), GFP_KERNEL); > @@ -1002,7 +1009,7 @@ static int __ibmvnic_open(struct net_device *netdev) > static int ibmvnic_open(struct net_device *netdev) > { > struct ibmvnic_adapter *adapter = netdev_priv(netdev); > - int rc, vpd; > + int rc; > > mutex_lock(&adapter->reset_lock); > > @@ -1030,11 +1037,6 @@ static int ibmvnic_open(struct net_device *netdev) > rc = __ibmvnic_open(netdev); > netif_carrier_on(netdev); > > - /* Vital Product Data (VPD) */ > - vpd = ibmvnic_get_vpd(adapter); > - if (vpd) > - netdev_err(netdev, "failed to initialize Vital Product Data (VPD)\n"); > - > mutex_unlock(&adapter->reset_lock); > > return rc; >