Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1296567/?format=api
{ "id": 1296567, "url": "http://patchwork.ozlabs.org/api/patches/1296567/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20200523004049.34832-2-saeedm@mellanox.com/", "project": { "id": 7, "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api", "name": "Linux network development", "link_name": "netdev", "list_id": "netdev.vger.kernel.org", "list_email": "netdev@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20200523004049.34832-2-saeedm@mellanox.com>", "list_archive_url": null, "date": "2020-05-23T00:40:37", "name": "[net,01/13] net/mlx5: Add command entry handling completion", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "e536c36f021f3924fc0c03b8d35502e8fb43f3bd", "submitter": { "id": 65299, "url": "http://patchwork.ozlabs.org/api/people/65299/?format=api", "name": "Saeed Mahameed", "email": "saeedm@mellanox.com" }, "delegate": { "id": 34, "url": "http://patchwork.ozlabs.org/api/users/34/?format=api", "username": "davem", "first_name": "David", "last_name": "Miller", "email": "davem@davemloft.net" }, "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20200523004049.34832-2-saeedm@mellanox.com/mbox/", "series": [ { "id": 178808, "url": "http://patchwork.ozlabs.org/api/series/178808/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=178808", "date": "2020-05-23T00:40:36", "name": "[net,01/13] net/mlx5: Add command entry handling completion", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/178808/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1296567/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1296567/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<netdev-owner@vger.kernel.org>", "X-Original-To": "patchwork-incoming-netdev@ozlabs.org", "Delivered-To": "patchwork-incoming-netdev@ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)", "ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=mellanox.com", "ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256\n header.s=selector1 header.b=MB0H05pC;\n\tdkim-atps=neutral", "davemloft.net; dkim=none (message not signed)\n header.d=none;davemloft.net; dmarc=none action=none header.from=mellanox.com;" ], "Received": [ "from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 49TPg06cjjz9sRY\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Sat, 23 May 2020 10:41:16 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n id S2387472AbgEWAlP (ORCPT\n <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n Fri, 22 May 2020 20:41:15 -0400", "from mail-eopbgr70075.outbound.protection.outlook.com\n ([40.107.7.75]:1415\n \"EHLO EUR04-HE1-obe.outbound.protection.outlook.com\"\n rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP\n id S2387413AbgEWAlO (ORCPT <rfc822;netdev@vger.kernel.org>);\n Fri, 22 May 2020 20:41:14 -0400", "from VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23)\n by VI1PR05MB5391.eurprd05.prod.outlook.com (2603:10a6:803:95::25) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.24; Sat, 23 May\n 2020 00:41:08 +0000", "from VI1PR05MB5102.eurprd05.prod.outlook.com\n ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com\n ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3021.026; Sat, 23 May 2020\n 00:41:08 +0000", "from smtp.office365.com (73.15.39.150) by\n BYAPR08CA0042.namprd08.prod.outlook.com (2603:10b6:a03:117::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.23 via Frontend\n Transport; Sat, 23 May 2020 00:41:06 +0000" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=jJqiEDZ9E5kNCUZc2ksugZoxgmy429WlGeWHMklLge+IiNuz3Gqyr+Q7Bwv4BwTKYQ4r/iV+6b68nN0Um70bIjYzXEfwVIrE9Qi8xZIP+HI8InDLwAyR1lxWWC2afaHnmem5g8G+2AKKrBzTQ0xryXd9OQzmTSK72iSwVBhFZKWI+TCP8+YU6De2yzZmSXmIMdc4SqrGpqGeBj0rTNJDhspMHqBm2o6j/RKA/K1x6wjhytUAzoQKWJnybj9ScU6XMjP4a5eLWlSU6SfTHnOKSftjTPWIZn7GL2D80Dw1rnooFwGavBGE/j/yV/BoH9spov9TTS6irsq+C7ZXe/7qQg==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=IwIUsbM+UtO69Xoyyw9GBTNFlJ7Q3t9gOyYHXh9fwAk=;\n b=f0Jh8JcBPgRzsypZy36DyB4rkwqEPHu2taFEGLUGOCFuOfobxTzlhrVey92pQVxBfh/CvbjBfSEiPamPgHzcfxetJKbnsEbmHsvsJXD6cmyGJVYdDvR+sPfR+I3O/NCBkCua1bx7hFKx0gXKRLLLFp1M6hQ6H4KPSy+/BhvUMLMjXPNoTKQi5t/vrKOuNyYTUGkSkoa4TTR8/yOOPYVNN1xXl7qvMOqgX5HoVpDMvvODMy/S5Jailyl2oz5s2TkwDg11b27c04V8KUZFvH3RbLWKQlFCDJ5+RHVYTXfbeZtHUn9qtT+F8SIcZK9TLideQJ+uR4WXbHmyaj/fJQHqbg==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com;\n dkim=pass header.d=mellanox.com; arc=none", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=IwIUsbM+UtO69Xoyyw9GBTNFlJ7Q3t9gOyYHXh9fwAk=;\n b=MB0H05pCC6KS3RdZXHdr67dKfZAi3GNHkLbCpyCyrdlRxVJ+gc3tvGM8HOEqSN8YVMGTDrd2lsJBuWp3I2KlOoq699PK05Y8voSsunvK+UTJEoyRqJruahya5/aJ+I7h6U4uv1tObAvy2Hm0wrtKQQXnGssBC7MHoivft4ucjao=", "From": "Saeed Mahameed <saeedm@mellanox.com>", "To": "\"David S. Miller\" <davem@davemloft.net>, kuba@kernel.org", "Cc": "netdev@vger.kernel.org, Moshe Shemesh <moshe@mellanox.com>,\n Eran Ben Elisha <eranbe@mellanox.com>,\n Saeed Mahameed <saeedm@mellanox.com>", "Subject": "[net 01/13] net/mlx5: Add command entry handling completion", "Date": "Fri, 22 May 2020 17:40:37 -0700", "Message-Id": "<20200523004049.34832-2-saeedm@mellanox.com>", "X-Mailer": [ "git-send-email 2.25.4", "git-send-email 2.25.4" ], "In-Reply-To": "<20200523004049.34832-1-saeedm@mellanox.com>", "References": "<20200523004049.34832-1-saeedm@mellanox.com>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "BYAPR08CA0042.namprd08.prod.outlook.com\n (2603:10b6:a03:117::19) To VI1PR05MB5102.eurprd05.prod.outlook.com\n (2603:10a6:803:5e::23)", "MIME-Version": "1.0", "X-MS-Exchange-MessageSentRepresentingType": "1", "X-Originating-IP": "[73.15.39.150]", "X-MS-PublicTrafficType": "Email", "X-MS-Office365-Filtering-HT": "Tenant", "X-MS-Office365-Filtering-Correlation-Id": "035ff3dd-245f-48ce-e6dc-08d7feb1fbd6", "X-MS-TrafficTypeDiagnostic": "VI1PR05MB5391:", "X-MS-Exchange-Transport-Forked": "True", "X-Microsoft-Antispam-PRVS": "\n <VI1PR05MB5391E646085504B1916CBD8ABEB50@VI1PR05MB5391.eurprd05.prod.outlook.com>", "X-MS-Oob-TLC-OOBClassifiers": "OLM:359;", "X-Forefront-PRVS": "0412A98A59", "X-MS-Exchange-SenderADCheck": "1", "X-Microsoft-Antispam": "BCL:0;", "X-Microsoft-Antispam-Message-Info": "\n NYrSuVr5QvEg3BmOr6dbxQoHuq9YdbfUU+hRUuT0gEGOy06xjTsssGUxj2IAbOOfOr62jSFNQCni6GmNPmOOkCTpuYTjKNDZ3VSjIjo/gvrSXKNH7rRNS10or/xhud4HCcTN1nHgkjC7mVNm+uOm50J5F8d+fCeG4znc2ZK9k9fAFzna29jzhCxLnkH65AZzLR9bQwtXv3ewwj6wjPxhM1WGK4csFV6mbpRALthDp3tlEdNn8yKZtIOAB2+hEH386uL8/HKDgoACkgzidku7+wNskIArnpvUJ2HKjpUNbelQBOg8ncrjAOOy0TL6kahWT89+D2OTmAly3QGCunB4BM0kXG555CuzRSDBiKcstwYPw7S/P2Pu7i+tREhjNbLx", "X-Forefront-Antispam-Report": "\n CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB5102.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(346002)(376002)(366004)(396003)(39860400002)(136003)(1076003)(8676002)(2616005)(956004)(4326008)(52116002)(186003)(26005)(16526019)(478600001)(6666004)(86362001)(6506007)(6512007)(107886003)(36756003)(316002)(5660300002)(8936002)(6486002)(66946007)(54906003)(66476007)(2906002)(66556008)(54420400002);DIR:OUT;SFP:1101;", "X-MS-Exchange-AntiSpam-MessageData": "\n N+zOTE9N7I7S4rbybcFCYPyH2eISI/lSr7qvEJiCJ7XSvAqRLC/PQoEz7WdzmNrpTr+Qdo0RcOhcqP1sMprs15JygtnPe9FasGlaCp7troB4uY3IWeWgCFp3mXseBseNN2PA9ydmQoN/2ospFmLnFlQziDfsN6HDY0F+LlpKVJOrBaYJfHE+5xvBOkPrKCeFsLBF+iqbGMpQ04qddS8p1UflXJHYWiFPTQNzdAZStHrEN1LVI2XaDvEKwMVg60hDpn0AoEV3Yme5oEui54VOGzoOo/z/uEpBOVAxXaXmUhg4t9b2ycFzusAoiO1sENTz2bG0USM6Ep1n5OicVcgVg4uaHYupLOAZPImgtH1fj0vzZ08JahMdZOaCK0NdM+sDJdlrbMEU6vP8CLwhIEDaPxVBHFupBVnFeEsxbTkubukV0PNPQ523TK7pJWiZcVWmlUpuxXy4Gdnqivy0yc0lUCDXrFp2TbNhlyt/eTEn1hc=", "X-OriginatorOrg": "Mellanox.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 035ff3dd-245f-48ce-e6dc-08d7feb1fbd6", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "23 May 2020 00:41:08.5964\n (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n PvvRvjHCEo2/hoLwDcEZ9Vt1D2lkkS8Nhf0bIYcCvNGKiUEoERxrHRF+yZZ1dQrKLaH5cjGhuuJu55x6B/0PZg==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI1PR05MB5391", "Sender": "netdev-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netdev.vger.kernel.org>", "X-Mailing-List": "netdev@vger.kernel.org" }, "content": "From: Moshe Shemesh <moshe@mellanox.com>\n\nWhen FW response to commands is very slow and all command entries in\nuse are waiting for completion we can have a race where commands can get\ntimeout before they get out of the queue and handled. Timeout\ncompletion on uninitialized command will cause releasing command's\nbuffers before accessing it for initialization and then we will get NULL\npointer exception while trying access it. It may also cause releasing\nbuffers of another command since we may have timeout completion before\neven allocating entry index for this command.\nAdd entry handling completion to avoid this race.\n\nFixes: e126ba97dba9 (\"mlx5: Add driver for Mellanox Connect-IB adapters\")\nSigned-off-by: Moshe Shemesh <moshe@mellanox.com>\nSigned-off-by: Eran Ben Elisha <eranbe@mellanox.com>\nSigned-off-by: Saeed Mahameed <saeedm@mellanox.com>\n---\n drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 14 ++++++++++++++\n include/linux/mlx5/driver.h | 1 +\n 2 files changed, 15 insertions(+)", "diff": "diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c\nindex cede5bdfd598..d695b75bc0af 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c\n@@ -861,6 +861,7 @@ static void cmd_work_handler(struct work_struct *work)\n \tint alloc_ret;\n \tint cmd_mode;\n \n+\tcomplete(&ent->handling);\n \tsem = ent->page_queue ? &cmd->pages_sem : &cmd->sem;\n \tdown(sem);\n \tif (!ent->page_queue) {\n@@ -978,6 +979,11 @@ static int wait_func(struct mlx5_core_dev *dev, struct mlx5_cmd_work_ent *ent)\n \tstruct mlx5_cmd *cmd = &dev->cmd;\n \tint err;\n \n+\tif (!wait_for_completion_timeout(&ent->handling, timeout) &&\n+\t cancel_work_sync(&ent->work)) {\n+\t\tent->ret = -ECANCELED;\n+\t\tgoto out_err;\n+\t}\n \tif (cmd->mode == CMD_MODE_POLLING || ent->polling) {\n \t\twait_for_completion(&ent->done);\n \t} else if (!wait_for_completion_timeout(&ent->done, timeout)) {\n@@ -985,12 +991,17 @@ static int wait_func(struct mlx5_core_dev *dev, struct mlx5_cmd_work_ent *ent)\n \t\tmlx5_cmd_comp_handler(dev, 1UL << ent->idx, true);\n \t}\n \n+out_err:\n \terr = ent->ret;\n \n \tif (err == -ETIMEDOUT) {\n \t\tmlx5_core_warn(dev, \"%s(0x%x) timeout. Will cause a leak of a command resource\\n\",\n \t\t\t mlx5_command_str(msg_to_opcode(ent->in)),\n \t\t\t msg_to_opcode(ent->in));\n+\t} else if (err == -ECANCELED) {\n+\t\tmlx5_core_warn(dev, \"%s(0x%x) canceled on out of queue timeout.\\n\",\n+\t\t\t mlx5_command_str(msg_to_opcode(ent->in)),\n+\t\t\t msg_to_opcode(ent->in));\n \t}\n \tmlx5_core_dbg(dev, \"err %d, delivery status %s(%d)\\n\",\n \t\t err, deliv_status_to_str(ent->status), ent->status);\n@@ -1026,6 +1037,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in,\n \tent->token = token;\n \tent->polling = force_polling;\n \n+\tinit_completion(&ent->handling);\n \tif (!callback)\n \t\tinit_completion(&ent->done);\n \n@@ -1045,6 +1057,8 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in,\n \terr = wait_func(dev, ent);\n \tif (err == -ETIMEDOUT)\n \t\tgoto out;\n+\tif (err == -ECANCELED)\n+\t\tgoto out_free;\n \n \tds = ent->ts2 - ent->ts1;\n \top = MLX5_GET(mbox_in, in->first.data, opcode);\ndiff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h\nindex 6f8f79ef829b..9b1f29f26c27 100644\n--- a/include/linux/mlx5/driver.h\n+++ b/include/linux/mlx5/driver.h\n@@ -743,6 +743,7 @@ struct mlx5_cmd_work_ent {\n \tstruct delayed_work\tcb_timeout_work;\n \tvoid\t\t *context;\n \tint\t\t\tidx;\n+\tstruct completion\thandling;\n \tstruct completion\tdone;\n \tstruct mlx5_cmd *cmd;\n \tstruct work_struct\twork;\n", "prefixes": [ "net", "01/13" ] }