Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/49078/?format=api
https://patches.dpdk.org/api/patches/49078/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1545161721-382282-1-git-send-email-andy.pei@intel.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1545161721-382282-1-git-send-email-andy.pei@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1545161721-382282-1-git-send-email-andy.pei@intel.com", "date": "2018-12-18T19:35:21", "name": "[v2] /driver/raw/ifpga_rawdev: fix a memory leak bug in ifpga", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "153b101689d1fe8d8e24131b185213899692d92a", "submitter": { "id": 1185, "url": "https://patches.dpdk.org/api/people/1185/?format=api", "name": "Pei, Andy", "email": "andy.pei@intel.com" }, "delegate": { "id": 1, "url": "https://patches.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1545161721-382282-1-git-send-email-andy.pei@intel.com/mbox/", "series": [ { "id": 2846, "url": "https://patches.dpdk.org/api/series/2846/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=2846", "date": "2018-12-18T19:35:21", "name": "[v2] /driver/raw/ifpga_rawdev: fix a memory leak bug in ifpga", "version": 2, "mbox": "https://patches.dpdk.org/series/2846/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/49078/comments/", "check": "warning", "checks": "https://patches.dpdk.org/api/patches/49078/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id ECB0D1B192;\n\tTue, 18 Dec 2018 12:45:30 +0100 (CET)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby dpdk.org (Postfix) with ESMTP id 09A841B111\n\tfor <dev@dpdk.org>; Tue, 18 Dec 2018 12:45:28 +0100 (CET)", "from orsmga002.jf.intel.com ([10.7.209.21])\n\tby fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t18 Dec 2018 03:45:27 -0800", "from dipei-st-npg.sh.intel.com ([10.67.110.220])\n\tby orsmga002.jf.intel.com with ESMTP; 18 Dec 2018 03:45:26 -0800" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.56,367,1539673200\"; d=\"scan'208\";a=\"119236375\"", "From": "AndyPei <andy.pei@intel.com>", "To": "dev@dpdk.org", "Cc": "rosen.xu@intel.com,\n\ttianfei.zhang@intel.com,\n\tandy.pei@intel.com", "Date": "Wed, 19 Dec 2018 03:35:21 +0800", "Message-Id": "<1545161721-382282-1-git-send-email-andy.pei@intel.com>", "X-Mailer": "git-send-email 1.8.3.1", "In-Reply-To": "<1544725998-70149-1-git-send-email-andy.pei@intel.com>", "References": "<1544725998-70149-1-git-send-email-andy.pei@intel.com>", "Subject": "[dpdk-dev] [PATCH v2]/driver/raw/ifpga_rawdev: fix a memory leak\n\tbug in ifpga", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "When ifpga_rawdev_create() allocate memory for a new rawdev, the \noriginal code allocate redundant memory for adapter, which is a \nmember of the rawdev. What is actually necessary is the adapter \nto be initialized, not memory allocated.\n\nfixes:ef1e8ede3da5\ncc:rosen.xu@intel.com\ncc:tianfei.zhang@intel.com\n\nSigned-off-by: AndyPei <andy.pei@intel.com>\n---\n drivers/raw/ifpga_rawdev/base/opae_hw_api.c | 32 ++++++++++++++++++++++++-----\n drivers/raw/ifpga_rawdev/base/opae_hw_api.h | 4 +++-\n drivers/raw/ifpga_rawdev/ifpga_rawdev.c | 7 +++----\n 3 files changed, 33 insertions(+), 10 deletions(-)", "diff": "diff --git a/drivers/raw/ifpga_rawdev/base/opae_hw_api.c b/drivers/raw/ifpga_rawdev/base/opae_hw_api.c\nindex a533dfe..50f6438 100644\n--- a/drivers/raw/ifpga_rawdev/base/opae_hw_api.c\n+++ b/drivers/raw/ifpga_rawdev/base/opae_hw_api.c\n@@ -303,12 +303,35 @@ static struct opae_adapter_ops *match_ops(struct opae_adapter *adapter)\n }\n \n /**\n- * opae_adapter_data_alloc - alloc opae_adapter_data data structure\n+ * opae_adapter_init - init opae_adapter data structure\n+ * @adpdate: pointer of opae_adater data structure\n+ * @name: adapter name.\n+ * @data: private data of this adapter.\n+ *\n+ * Return: 0 on success.\n+ */\n+int opae_adapter_init(struct opae_adapter *adapter,\n+\t\tconst char *name, void *data)\n+{\n+\tif (!adapter)\n+\t\treturn -ENOMEM;\n+\n+\tTAILQ_INIT(&adapter->acc_list);\n+\tadapter->data = data;\n+\tadapter->name = name;\n+\tadapter->ops = match_ops(adapter);\n+\n+\treturn 0;\n+}\n+\n+/**\n+ * opae_adapter_alloc - alloc opae_adapter data structure\n * @name: adapter name.\n * @data: private data of this adapter.\n *\n * Return: opae_adapter on success, otherwise NULL.\n */\n+ /**This function will no longer be called.\n struct opae_adapter *opae_adapter_alloc(const char *name, void *data)\n {\n \tstruct opae_adapter *adapter = opae_zmalloc(sizeof(*adapter));\n@@ -316,13 +339,12 @@ struct opae_adapter *opae_adapter_alloc(const char *name, void *data)\n \tif (!adapter)\n \t\treturn NULL;\n \n-\tTAILQ_INIT(&adapter->acc_list);\n-\tadapter->data = data;\n-\tadapter->name = name;\n-\tadapter->ops = match_ops(adapter);\n+\tif (opae_adapter_init(adapter, name, data))\n+\t\treturn NULL;\n \n \treturn adapter;\n }\n+**/\n \n /**\n * opae_adapter_enumerate - enumerate this adapter\ndiff --git a/drivers/raw/ifpga_rawdev/base/opae_hw_api.h b/drivers/raw/ifpga_rawdev/base/opae_hw_api.h\nindex 4bbc9df..ac1941a 100644\n--- a/drivers/raw/ifpga_rawdev/base/opae_hw_api.h\n+++ b/drivers/raw/ifpga_rawdev/base/opae_hw_api.h\n@@ -225,7 +225,9 @@ struct opae_adapter {\n void *opae_adapter_data_alloc(enum opae_adapter_type type);\n #define opae_adapter_data_free(data) opae_free(data)\n \n-struct opae_adapter *opae_adapter_alloc(const char *name, void *data);\n+int opae_adapter_init(struct opae_adapter *adapter,\n+\t\tconst char *name, void *data);\n+//struct opae_adapter *opae_adapter_alloc(const char *name, void *data);\n #define opae_adapter_free(adapter) opae_free(adapter)\n \n int opae_adapter_enumerate(struct opae_adapter *adapter);\ndiff --git a/drivers/raw/ifpga_rawdev/ifpga_rawdev.c b/drivers/raw/ifpga_rawdev/ifpga_rawdev.c\nindex 32e318f..d433091 100644\n--- a/drivers/raw/ifpga_rawdev/ifpga_rawdev.c\n+++ b/drivers/raw/ifpga_rawdev/ifpga_rawdev.c\n@@ -409,9 +409,10 @@\n \tdata->device_id = pci_dev->id.device_id;\n \tdata->vendor_id = pci_dev->id.vendor_id;\n \n+\tadapter = rawdev->dev_private;\n \t/* create a opae_adapter based on above device data */\n-\tadapter = opae_adapter_alloc(pci_dev->device.name, data);\n-\tif (!adapter) {\n+\tret = opae_adapter_init(adapter, pci_dev->device.name, data);\n+\tif (ret) {\n \t\tret = -ENOMEM;\n \t\tgoto free_adapter_data;\n \t}\n@@ -420,8 +421,6 @@\n \trawdev->device = &pci_dev->device;\n \trawdev->driver_name = pci_dev->device.driver->name;\n \n-\trawdev->dev_private = adapter;\n-\n \t/* must enumerate the adapter before use it */\n \tret = opae_adapter_enumerate(adapter);\n \tif (ret)\n", "prefixes": [ "v2" ] }{ "id": 49078, "url": "