From patchwork Wed Feb 14 08:55:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadi Sharshevsky X-Patchwork-Id: 873282 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="IZh4KpQK"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zhCtR0y1Fz9t2x for ; Wed, 14 Feb 2018 19:55:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935110AbeBNIz4 (ORCPT ); Wed, 14 Feb 2018 03:55:56 -0500 Received: from mail-db5eur01on0068.outbound.protection.outlook.com ([104.47.2.68]:43664 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934850AbeBNIzx (ORCPT ); Wed, 14 Feb 2018 03:55:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+nEwZCFkSJ9qEsQ84fLZBiLzZTBRMYZaUCPuP6FAsxQ=; b=IZh4KpQKuxEFVCjHu3WaK0zJ+7xAvgclKRgmUop6WJ+/tGomWosfbYA2NRAATNk2IbJ05z5LRIQ3fgWthY7ubTsOOHvvA1CYsveFgW2Wh7FSkSe0OmhjZAF7zusprg4sMMLb+eeXn52V5/u8H+xK2qGxkIQnZIJKRmkD5rgOR2I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=arkadis@mellanox.com; Received: from dev-r-vrt-156.mtr.labs.mlnx (37.142.13.130) by VI1PR0501MB2461.eurprd05.prod.outlook.com (2603:10a6:800:68::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.485.10; Wed, 14 Feb 2018 08:55:46 +0000 From: Arkadi Sharshevsky To: netdev@vger.kernel.org Cc: davem@davemloft.net, stephen@networkplumber.org, dsa@cumulusnetworks.com, mlxsw@mellanox.com, Arkadi Sharshevsky Subject: [PATCH iproute2 5/7] devlink: Move dpipe context from heap to stack Date: Wed, 14 Feb 2018 10:55:20 +0200 Message-Id: <1518598522-27713-6-git-send-email-arkadis@mellanox.com> X-Mailer: git-send-email 2.4.11 In-Reply-To: <1518598522-27713-1-git-send-email-arkadis@mellanox.com> References: <1518598522-27713-1-git-send-email-arkadis@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: HE1PR0102CA0039.eurprd01.prod.exchangelabs.com (2603:10a6:7:7d::16) To VI1PR0501MB2461.eurprd05.prod.outlook.com (2603:10a6:800:68::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f8ad185b-bf92-4df5-c490-08d57388bdd7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020); SRVR:VI1PR0501MB2461; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2461; 3:0hlnH7I1YC9K4T1hjN5lwCJ6RXyEQT1M0ZxBuwUhen3KBt71hFFRRh0NtMTyjIqwoJqCAOhCDYXdhWthOiZ+7etONyJg7rS3jjiTRtVE9sqw7f/it6FLW359c/qFqvkSb8D05O+p+0jNRb4POkDWQNw+E+ZZIa7iqaHI2hHgUpQjRptOk54Gvnw+qRj/dFKtLYSrS8AV3d3G4MPv0ijqBWN+4/em8Ujze3jqpbBirzApRG4RxOuVL89GZ0lHICJu; 25:L99/IFoCjrwUH5h8+cF15DmqL2p26s16zGRRV3fAohQwCYhrMFlOEVZtRgcZl4skzzXEumfcHp4H/WCsS5FoILbSwy9RBQguIXY8lvRw8QEaM7Pn2RDW/flm9M+k8wDKZ7Qh9C3kyvBy84LEJy9suHvawcThUWtidkEjD13FDgKmhAFRDbQFHU4yTvSyQ8w3uiQ1rZjjRympOWpFvYMIeP8Bp4EBaefHxhVn9xu60BdpwvEQfbGhtKDnK8axELrHcq7CbWfd8TiZBs06n0761MYNStPVAzoZ4AVU3SE0Y10qc3EmQibFEeBLLlVGSBupUlrr/0m6ZyV6eHAGLwyIWA==; 31:xfMLc65zHaDVPrfbY7xr6ITXc/zyk13OXWBwexVj1VrATDgGoWvt5sxepWgxTmFf7t3GFldgAd1TFXDg2H/tZFqjzWV/jD2ni+VlwtDwFGzI3KMBdx0v4pJTKj0IHeaD6YRP0iB99zd/api5ly+45SHHq2f8KQZvwYvNW2MbqPSyv1wkyDR7If0jvaU1xJv9n9VxLZF8jakyqsDbMbjs9g890ep5HLvYZv93QIgiZAI= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2461: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2461; 20:6UG1NXa141oG8FeKUyM7RmtWxgluDOmIxTTxvDiEt8Bz1xJgWhzAMvBI8qo2KFIxRkx1ts+ljqnGX55qWd2HhnV+mI8YjVtR/VnAnD9Qq890/e1LFmt4AkEjqwpyUBmtCdOb94amHMOlFGfvz78DeEa7paYVd+Ea0bQ6MJCH5iK9tWEzRi4qjOU4X31Ta3Z+42xHS30ORKTnUI6it46BZGuEqpgWAInBdwPz9JzmMlrxJR8icAp4R9E/wnSiRRkNieqSseiiYZCASjfhflGmw1V5t0D8lZlcKKMP0sIgkrJwhWYSfqp9Q5PAHUOoIvRjXj+8gn3hIvgVqx7srWtzcbrjdt1ZE5x6Fny77zF+1rX5gTa4JjV/2tjJb17dUn2aRmRYD9iyGAm2n+Ow/cwmAhP6XmlHE8EMoBTlog6m/7H5FzhsLPIgawQE8o4yhdtBDMx6R/MK/e6CKiVHssJjhlA7aBh+aKV3G+PUfoyCYJoO4yaOABMiiQHjoJPcPl9i; 4:f7hJ0y0UW89jkUqGo5DtYnwEIK8Su9HF4jumOk98yWMLtbN5YjRIp+zq8Hh/q0xGZbmAcvq72n56pJUGngikH8qXCeEsjchrea0Ku+ueXHOkMkYaPOY4EaoDNOn+/Ca/EgmunALrwulmoA0ARw/QDFVG6ZtlW3Ved+ZQk1b3SNnh5DQRKVb6M+mY+o+O+ADGy3mW8fdjP9g2c8P2oEkZsDrwMmNLGaEMLfbDpg+KEuWfu0kAEuwzSSJETu8GTNQj/ifRH1/ks5gh7J//clQt5g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3231101)(944501161)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123564045)(20161123562045)(6072148)(201708071742011); SRVR:VI1PR0501MB2461; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2461; X-Forefront-PRVS: 0583A86C08 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(39380400002)(39860400002)(366004)(396003)(376002)(189003)(199004)(50226002)(81156014)(2361001)(6116002)(6512007)(7736002)(26005)(86362001)(3846002)(81166006)(47776003)(305945005)(107886003)(316002)(6506007)(106356001)(8676002)(16586007)(53936002)(478600001)(386003)(5660300001)(76176011)(25786009)(48376002)(52116002)(4326008)(2950100002)(6916009)(97736004)(6666003)(8936002)(66066001)(2906002)(68736007)(2351001)(36756003)(105586002)(186003)(50466002)(16526019)(59450400001)(6486002)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2461; H:dev-r-vrt-156.mtr.labs.mlnx; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2461; 23:9RFUEwz3qSZjWGCsOMn+r8wkJoK7sgly/+jGIoYbFAapSLE+F8Q+Jzx7QSZvRIuLOCTr7YDn4jifU90ORRkmEk0RvEEH2wcBH47bxjHzR/EnW2/AeiiXBnXARYQRM5TAbJf6dQH4Rm3b+NOLazMVGV3DFP2GrMqaMrk9PkjLj22pi/jyCNJKwYB+nGxG5JddCw+w1OP++vzKvqL+1HScCHkdpq/uxdIX09/iCO3/qfc90dEPZYKPhtcNrKOo2bz1JYAkBY9RBmIQzFjhy6GpmZU/bCRCBNownxQtP/6HyytowwfXVV+a2jU2mVBDNtHPDWyvpJ1TEsG6/KxQ2pQgkHtbw0c10jAjlzhCg9HkWmaww71suxVmytglve3pvHwGi95vKDB/86St7+siwwfRl9j+jJv3EIW7lC3r0sPbWh6uR0HB0ZCTyEfnllHkwonB5oIXWLmDHRn+lIWoIMzxq35kXNIF7/HBOguvkoejH1HOlWlZY+2eTP0xtNsr1cqTVVhFbFMoxYAkOFn+u7ZiJTVua+d33iftJaGInMf/Y5OMuGOoafOdhUXGOz7cqr1joT5Bb0lDqmwEOU6geek/H3KkS2LFiVb/P5CgNciSPnLhp2rTAlz99EDY0nPZtAXO9PEjD6qZzkvCHllYylOiLlZNsHxr1ld4oiaNV8kgqtpITHT4BYYgyC/e+QTgI6lpyKk/460HPUS5LdYvB2s2tT7fWGh7REEbsbRKTZryxdqmszsEouMcekitmxN1eyb0toaedrT7iJ/WA42NUoAcAWjWvq6PNrc8dG+Rx+YOxcwaM/U4y68HwqzfTobNXqLI7SNDn4CRAMgI6W/dmO9S9M8x9gwC59B72RutSP02NXMxANr66un50khFaL8hjN9KPiJGuhPERxtk/qyNLrTmCa36vyPs/01xHNF6hd5hOZvFf7qWzADG7v9QfWmNKAe2OkVXRJD9XeFmnQm65UFtkfcztmYnVeVr8eBvbF5Ltxqsvhf1Vx+51LchOB9U0zec86CKOlYmoBrF8h3vxPVW4PPPbIgi/dxgprq5djhlRPSDCc3VK/pPpqJLtH3sfXMx98IeDsxmvHzYaVJnnWQI+NBuHftXLBFavrE2IkPns4ca4DlDZhEpMNCh4CjxK4chNKLXBzn2nWGJvUGXuQr1WsR6K4laoxiBltS01/BHhc8= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2461; 6:ttLnuVbutD9GTZrmYnHppMc1X/Rml2WkCqfdvNcSWJUfgLoBUsYAQfGBLUYOkS6uhsETeNdXyRX9ahA3HvAPO/mX/XcR761Im5XlYyTWlVlHKwlUKzdlAaMZsU/ITkNRIFNhJ575IKalDs4dwainVYSZ4g01jUpG4Vrzdaf8aD0ju10UH83JtrcyOuQnIiEW4vK55QvVjcsAYmJOC3p9Blxez3/U25kALvxiBkS+rqKoH9V5aj9EcerYC9WqIAWfn962Ot3h3eC9sCWzyVKKvEoTF5W+cUXdyAGtVooUxE6DVNF3ZEtGpwhoIRoSAGVYC+ybWn5NQTOIvVyQ3jxn7WNbLorEYzhW+mqOWjMaXDg=; 5:6AmvHJF/IJpZ3DAFpb4fe1XHuZAb2AFJgvJjZoDiUnhBTjXqzwFHvtCJzKYPvHGXOl2J25INrUOIMP2loelyCONb7TcQu80waDfPPGSzH3HLIz2lGITtr2or+xkNJK9djlMoDT4mtObxO10PtdMuXQjbHU3PsJmdDfl8fh3EQo4=; 24:+Kdw0wGOvZdV6gojqqU4WjYzLx4IhlEnSNHAzh334bs2i9S/2zSRxI5W5Tq2qqzmCbaV4XTBW9YryOXJvYkQ67MYHaD8INUfA9wP+vZJoms=; 7:yQleI4N7GnmQuT0lj6kF0ygUXctab7p6VwBWqr/JvjXBmIgafswYnYz37apLuVWou55F16DpmZpgJ/WReMfR4gVmjUFC9imgyXC5IfDNmxR3NslNPp1yKkmL+KoA/PkllF/BCUzACVyHK/dN08U+szpghyRiIWkrfvPqjuNkJa2iLY1x6kUZV1ZkaXxJrDfVAbtv2WCQfVuDs5dKhlhLYyDn5qBL9mmPlGkKn8PEA0kGJgzHvMpclT407krIhHBo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2018 08:55:46.7292 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f8ad185b-bf92-4df5-c490-08d57388bdd7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2461 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Move dpipe context to stack instead of dynamically. Signed-off-by: Arkadi Sharshevsky Acked-by: Jiri Pirko --- devlink/devlink.c | 67 ++++++++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/devlink/devlink.c b/devlink/devlink.c index 21835d9..aec36ff 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -2882,25 +2882,15 @@ static void dpipe_header_del(struct dpipe_header *header) list_del(&header->list); } -static struct dpipe_ctx *dpipe_ctx_alloc(struct dl *dl) +static int dpipe_ctx_init(struct dpipe_ctx *ctx, struct dl *dl) { - struct dpipe_ctx *ctx; - - ctx = calloc(1, sizeof(struct dpipe_ctx)); - if (!ctx) - return NULL; ctx->dl = dl; INIT_LIST_HEAD(&ctx->global_headers); INIT_LIST_HEAD(&ctx->local_headers); - return ctx; -} - -static void dpipe_ctx_free(struct dpipe_ctx *ctx) -{ - free(ctx); + return 0; } -static void dpipe_ctx_clear(struct dpipe_ctx *ctx) +static void dpipe_ctx_fini(struct dpipe_ctx *ctx) { struct dpipe_header *header, *tmp; @@ -3171,7 +3161,7 @@ static int cmd_dpipe_header_cb(const struct nlmsghdr *nlh, void *data) static int cmd_dpipe_headers_show(struct dl *dl) { struct nlmsghdr *nlh; - struct dpipe_ctx *ctx; + struct dpipe_ctx ctx = {}; uint16_t flags = NLM_F_REQUEST | NLM_F_ACK; int err; @@ -3181,20 +3171,19 @@ static int cmd_dpipe_headers_show(struct dl *dl) if (err) return err; - ctx = dpipe_ctx_alloc(dl); - if (!ctx) - return -ENOMEM; + err = dpipe_ctx_init(&ctx, dl); + if (err) + return err; - ctx->print_headers = true; + ctx.print_headers = true; pr_out_section_start(dl, "header"); - err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_header_cb, ctx); + err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_header_cb, &ctx); if (err) - pr_err("error get headers %s\n", strerror(ctx->err)); + pr_err("error get headers %s\n", strerror(ctx.err)); pr_out_section_end(dl); - dpipe_ctx_clear(ctx); - dpipe_ctx_free(ctx); + dpipe_ctx_fini(&ctx); return err; } @@ -3532,13 +3521,13 @@ static int cmd_dpipe_table_show_cb(const struct nlmsghdr *nlh, void *data) static int cmd_dpipe_table_show(struct dl *dl) { struct nlmsghdr *nlh; - struct dpipe_ctx *ctx; + struct dpipe_ctx ctx = {}; uint16_t flags = NLM_F_REQUEST; int err; - ctx = dpipe_ctx_alloc(dl); - if (!ctx) - return -ENOMEM; + err = dpipe_ctx_init(&ctx, dl); + if (err) + return err; err = dl_argv_parse(dl, DL_OPT_HANDLE, DL_OPT_DPIPE_TABLE_NAME); if (err) @@ -3546,9 +3535,9 @@ static int cmd_dpipe_table_show(struct dl *dl) nlh = mnlg_msg_prepare(dl->nlg, DEVLINK_CMD_DPIPE_HEADERS_GET, flags); dl_opts_put(nlh, dl); - err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_header_cb, ctx); + err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_header_cb, &ctx); if (err) { - pr_err("error get headers %s\n", strerror(ctx->err)); + pr_err("error get headers %s\n", strerror(ctx.err)); goto out; } @@ -3557,11 +3546,10 @@ static int cmd_dpipe_table_show(struct dl *dl) dl_opts_put(nlh, dl); pr_out_section_start(dl, "table"); - _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_table_show_cb, ctx); + _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_table_show_cb, &ctx); pr_out_section_end(dl); out: - dpipe_ctx_clear(ctx); - dpipe_ctx_free(ctx); + dpipe_ctx_fini(&ctx); return err; } @@ -3930,13 +3918,13 @@ static int cmd_dpipe_table_entry_dump_cb(const struct nlmsghdr *nlh, void *data) static int cmd_dpipe_table_dump(struct dl *dl) { struct nlmsghdr *nlh; - struct dpipe_ctx *ctx; + struct dpipe_ctx ctx = {}; uint16_t flags = NLM_F_REQUEST; int err; - ctx = dpipe_ctx_alloc(dl); - if (!ctx) - return -ENOMEM; + err = dpipe_ctx_init(&ctx, dl); + if (err) + return err; err = dl_argv_parse(dl, DL_OPT_HANDLE | DL_OPT_DPIPE_TABLE_NAME, 0); if (err) @@ -3944,9 +3932,9 @@ static int cmd_dpipe_table_dump(struct dl *dl) nlh = mnlg_msg_prepare(dl->nlg, DEVLINK_CMD_DPIPE_HEADERS_GET, flags); dl_opts_put(nlh, dl); - err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_header_cb, ctx); + err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_header_cb, &ctx); if (err) { - pr_err("error get headers %s\n", strerror(ctx->err)); + pr_err("error get headers %s\n", strerror(ctx.err)); goto out; } @@ -3955,11 +3943,10 @@ static int cmd_dpipe_table_dump(struct dl *dl) dl_opts_put(nlh, dl); pr_out_section_start(dl, "table_entry"); - _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_table_entry_dump_cb, ctx); + _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_dpipe_table_entry_dump_cb, &ctx); pr_out_section_end(dl); out: - dpipe_ctx_clear(ctx); - dpipe_ctx_free(ctx); + dpipe_ctx_fini(&ctx); return err; }