From patchwork Wed Jun 28 12:19:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Slava Ovsiienko X-Patchwork-Id: 129051 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3362942D80; Wed, 28 Jun 2023 14:20:16 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BB2C440151; Wed, 28 Jun 2023 14:20:15 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2042.outbound.protection.outlook.com [40.107.244.42]) by mails.dpdk.org (Postfix) with ESMTP id 985BA400EF; Wed, 28 Jun 2023 14:20:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ckW0PWdgp4Sls9Gom8PD96aqA4upPbUwi3ROoD+qeJ7UqSrpOiz+RbGIRHUA836Orih/ny/2hJZdyLbBcpbR7D4YOGEqDjogryYIz4hcMzutB5OlAUtxwPNRLtHaoxHGcn/BOxkBixv/t8+X70aDq1m4m7eJ4v89ENwgfJKNdu+CR4QvzOY+dIaa7TB2eoNBljLWJSmZNVbjaIZxtoGxMyzYYc/gWYgHZPGkXZjqrCU0LWdHOx1BFMbVrPLBu8Q+CtJR6kVbiR/qedMaSLC3gU9UPovXEWNdL/SW06QKF6/2QqpBtrOfU4Jypa5ldMTJ2Zygl9PRIhUy3femYPoJMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PKb8oat+S9zh3NlSzZTkqAQoGMkeVfUZQIjfKsHdykw=; b=ldaq9nxztnvtAefVTrsLsnRLpU83BGqwaj61oAvslOCWCd371WRvaNwPqDkvSyygDVTOvrn2VtMc7XqG1iukwxvhZyGWf58pUVwFtTmUUEDoQII+DmanEwec5/vUVgBpde72nFNWNvqqDqz2/zUDziydhfSwxNAb022p7afKBykP8fT0v/+h2b17j/Pkcf/5xZvC2xS5e4EatQvUpXhsDrUWfM+2c3/Ga6PmRyBJdrWku1+mPhbhU07oydtMb9bEsTTvsEaANe+WTp+2xgwjwfoQtmJdUeIIA0lUOpHAlsD1rTr5I6HnkHaQniq1qtMoDQ834Ad+ONHFsuVxdGD9NA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PKb8oat+S9zh3NlSzZTkqAQoGMkeVfUZQIjfKsHdykw=; b=VZePXQl79fVdlXbzFGWMduUwI9zROTd7x/E/LFF2ipjQbGV5z2sw078+YZ2uwjEQSleyrFsScO2/ad9gQwt8buqy6WdLyF0yxFJO8MZ5Os4smUmiF2/MBe7zqF0PnlqcMGmljMu8cBmH6G/jKX8Ch4DJdIwR45yDrN+8BDI4CuIq2IvZC44xDG7I8XKTNmPgQOp/QLXyfNByfZ+m4C06x8AEC/0t11pW9HeEjPjd3N8aPxx7BgaI/NBZtmUwIIn2+m7ZbgRm0lPj5VdNkpgoabVOwGk5vZYASKXyfrjdPmHAvLKio2mHyvNmraJDXKHpgqpDpnWWplwnD6FimRMbUQ== Received: from BN9PR03CA0651.namprd03.prod.outlook.com (2603:10b6:408:13b::26) by DS7PR12MB5983.namprd12.prod.outlook.com (2603:10b6:8:7e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Wed, 28 Jun 2023 12:20:09 +0000 Received: from BN8NAM11FT016.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13b:cafe::cd) by BN9PR03CA0651.outlook.office365.com (2603:10b6:408:13b::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.34 via Frontend Transport; Wed, 28 Jun 2023 12:20:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT016.mail.protection.outlook.com (10.13.176.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.48 via Frontend Transport; Wed, 28 Jun 2023 12:20:08 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Wed, 28 Jun 2023 05:19:53 -0700 Received: from nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Wed, 28 Jun 2023 05:19:51 -0700 From: Viacheslav Ovsiienko To: CC: , Subject: [PATCH] eal: fix file descriptor leakage with unhandled messages Date: Wed, 28 Jun 2023 15:19:38 +0300 Message-ID: <20230628121938.13452-1-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.18.1 MIME-Version: 1.0 X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT016:EE_|DS7PR12MB5983:EE_ X-MS-Office365-Filtering-Correlation-Id: 60a06d97-146d-4002-2404-08db77d203b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HDt5OrsfvMh232oPA6UZ+5B+iIS1XIK42XWlM7WXFNXPAOVve7gQRljM2F35RefeKTg55nDB6F+fLWAXncRG1yjySAp1CZuBMNoWWtpJemTbm/S0tX8Gl6EuepImpa8XR3Me606w8KtGRnYTZPQPM8/oqJmeUPq8ddLqcTzAKQx0vtx0+PXHm7JmnhWAsX7mnwRY2gGSVaZkYrYItTRRQO2JeMXnLNk/fY0jNNh/Xe/nydChn2ybHpjoSPWKXEDnJ7PuqtcNj585HqUDoYdAt4lk3v1X6LSD/DthWvT1tTB8g9iFX7sOzuTvMDh3jqXqEtZjFjLngXkG4R3bmnuSPoNLu0CeRV81F3YnZMM0GdBMxry+60Gc+qbSzHwjvMU8KutsN7DhVqpNPFqVlzKDtDN0ofEbmtH/WKv3DseQRb79PTEGS7+BSsmJXZw7+QqoGAaDXpyk1aMQu9P2mzrMezvPTODl8IL7RCxhtw6ibcMwVmDVLcqkUlhqxpSPtzA4cmM7PZnwohzNJTWb5m8T5Mz/ep5YlcyRwXxD9ABDISuZOmcwOPiSBeAMiSG8LvrX2CtSGlZoMGA4HtMo8DVzRo/HePW267AqJI6viUPkdlHlqD+KkvKoN/ULK1RvrTmx64n52lpa7VtOgt2zQeOOSKbJBhB4tNHjr9sJNnZJuJ1jn5/XBXnSFAVAsTt7Wlyc/W1n6GwU1mhZKfVX2S247sXpngEVm/nygKz2kB7sfnEdlbWFR9lpbjYmGtBc9276 X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230028)(4636009)(376002)(396003)(39860400002)(136003)(346002)(451199021)(36840700001)(46966006)(40470700004)(83380400001)(336012)(426003)(47076005)(8936002)(6666004)(316002)(7696005)(8676002)(54906003)(4326008)(41300700001)(40460700003)(36860700001)(36756003)(40480700001)(55016003)(82740400003)(86362001)(7636003)(356005)(82310400005)(2616005)(5660300002)(6916009)(478600001)(70206006)(2906002)(6286002)(186003)(16526019)(70586007)(15650500001)(26005)(1076003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2023 12:20:08.9582 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60a06d97-146d-4002-2404-08db77d203b0 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT016.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5983 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The sendmsg()/recvmsg() API is used to establish communication between the DPDK processes. The API supposes inter-process file descriptors sending and conversion, the recipient sees the resulting descriptors in the received message - the operating systems creates ones in the right context. The message receiving is performed by EAL in the dedicated thread and it might happen the message is received by EAL and not handled by addressed PMD or application due to some reasons (timeouts, race condition, etc). EAL just dropped unhandled messages causing the file descriptor leakage if these ones were presented in the message. The patch closes the descriptors (if any) in unhandled messages. Fixes: 783b6e54971 ("eal: add synchronous multi-process communication") Cc: stable@dpdk.org Signed-off-by: Viacheslav Ovsiienko Acked-by: Chengwen Feng Acked-by: Anatoly Burakov Acked-by: Chengwen Feng --- lib/eal/common/eal_common_proc.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/eal/common/eal_common_proc.c b/lib/eal/common/eal_common_proc.c index 1fc1d6c53b..9676dd73c5 100644 --- a/lib/eal/common/eal_common_proc.c +++ b/lib/eal/common/eal_common_proc.c @@ -321,6 +321,15 @@ read_msg(int fd, struct mp_msg_internal *m, struct sockaddr_un *s) return msglen; } +static void +cleanup_msg_fds(const struct rte_mp_msg *msg) +{ + int i; + + for (i = 0; i < msg->num_fds; i++) + close(msg->fds[i]); +} + static void process_msg(struct mp_msg_internal *m, struct sockaddr_un *s) { @@ -349,8 +358,10 @@ process_msg(struct mp_msg_internal *m, struct sockaddr_un *s) else if (pending_req->type == REQUEST_TYPE_ASYNC) req = async_reply_handle_thread_unsafe( pending_req); - } else + } else { RTE_LOG(ERR, EAL, "Drop mp reply: %s\n", msg->name); + cleanup_msg_fds(msg); + } pthread_mutex_unlock(&pending_requests.lock); if (req != NULL) @@ -380,6 +391,7 @@ process_msg(struct mp_msg_internal *m, struct sockaddr_un *s) RTE_LOG(ERR, EAL, "Cannot find action: %s\n", msg->name); } + cleanup_msg_fds(msg); } else if (action(msg, s->sun_path) < 0) { RTE_LOG(ERR, EAL, "Fail to handle message: %s\n", msg->name); }