Message ID | 20191113093656.15674-2-khorenko@virtuozzo.com |
---|---|
State | New |
Series | "kernel/module.c: don't allow modprobe to hang forever on a module load" |
Headers | show
Delivered-To: criupatchwork@gmail.com Received: from gmail-imap.l.google.com [74.125.131.108] by patchwork.criu.org with IMAP (fetchmail-6.3.26) for <root@localhost> (single-drop); Wed, 13 Nov 2019 10:39:04 +0100 (CET) Received: by 2002:a6b:6312:0:0:0:0:0 with SMTP id p18csp9448268iog; Wed, 13 Nov 2019 01:39:00 -0800 (PST) X-Google-Smtp-Source: APXvYqypzZSaHHjRhYPTjYVnt/OzqyPq4C8irN3ZjB1cvFVMo8rIWUfViTQ0ilzKj8WXml6YjY5W X-Received: by 2002:ac2:5210:: with SMTP id a16mr2055514lfl.156.1573637939931; Wed, 13 Nov 2019 01:38:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573637939; cv=none; d=google.com; s=arc-20160816; b=qn4q9Tox1uwEUqpzMlGP27uqC2m3rIas1u1qKhl/laoNYxAMAqA3vQ+xAbJ+AQAfv9 zevEx74vNa2jiv4fh0VXUkoVMHLL8QWxKnSRNEzGcypMBvpJhh7qE5aVxyNiO9x9OdrE WYjgY5W/O+x7MJ0b0VAT6g4cVqveMZVTer3gyElNe1+A7jgtner+2uUsn3QIx/waXFLg L0FrfKy/ImbvjXrEnxajPmJmCummNgAPqX5+6fpCU707R5+KypO4PvuWF7HSlpbPM1KN fuBqC++4Y93enb2whdXLBeT6uogXFWZJobvireLQgfmpB0qYsDImevpj0AjSkBwPYcZW yB0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:sender:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :cc:mime-version:references:in-reply-to:message-id:date:to:from; bh=QJoen7P5p8noc+OslbfpHlrxIm5W+stjPzM/ZaqtWJE=; b=SFlooJpOVFiXQjl/FUqhemji1/k2TSUx2/XABpvtYw3nqYanvcpQtPoNUTKdakYC5A R3hW01mWjqTjz0j+6bdLO3KRB6DXGPPLxr7M+Er+NuP8JWbzv8YiYHPZUVQeuINYs5ac QOwe3qwdV2lD4xE5dhVFEnkaVgdhkzHyOiv/m7Hsf4q9W/ELcivjIxTU8nDvs52/F56V d6tCsT1crzVb/7iHAYq7SxhG/7qzwL1kAflb0YHyhZ+Fm9ZV6s6mzNu97COnCP2PPzCi 0p1mbjSsxPi5/RibkYycTAyTxuGtZtJE/91DzLInyJWLJQ3BVMUsHizqSP/Uvv2k/6Gv 2yqg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of devel-bounces@openvz.org designates 185.231.241.50 as permitted sender) smtp.mailfrom=devel-bounces@openvz.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Return-Path: <devel-bounces@openvz.org> Received: from mail.openvz.org (mail.openvz.org. [185.231.241.50]) by mx.google.com with ESMTPS id q22si1838642lfm.2.2019.11.13.01.38.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 13 Nov 2019 01:38:58 -0800 (PST) Received-SPF: pass (google.com: domain of devel-bounces@openvz.org designates 185.231.241.50 as permitted sender) client-ip=185.231.241.50; Authentication-Results: mx.google.com; spf=pass (google.com: domain of devel-bounces@openvz.org designates 185.231.241.50 as permitted sender) smtp.mailfrom=devel-bounces@openvz.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Received: from localhost.localdomain (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id xAD9bADp018015; Wed, 13 Nov 2019 12:37:10 +0300 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2053.outbound.protection.outlook.com [104.47.1.53]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id xAD9avGp018002 for <devel@openvz.org>; Wed, 13 Nov 2019 12:36:57 +0300 Received: from VI1PR08CA0103.eurprd08.prod.outlook.com (2603:10a6:800:d3::29) by DB6PR08MB2823.eurprd08.prod.outlook.com (2603:10a6:6:21::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Wed, 13 Nov 2019 09:36:59 +0000 Received: from DB5EUR01FT046.eop-EUR01.prod.protection.outlook.com (2a01:111:f400:7e02::202) by VI1PR08CA0103.outlook.office365.com (2603:10a6:800:d3::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2451.23 via Frontend Transport; Wed, 13 Nov 2019 09:36:59 +0000 Authentication-Results: spf=pass (sender IP is 185.231.240.75) smtp.mailfrom=virtuozzo.com; openvz.org; dkim=none (message not signed) header.d=none; openvz.org; dmarc=pass action=none header.from=virtuozzo.com; Received-SPF: Pass (protection.outlook.com: domain of virtuozzo.com designates 185.231.240.75 as permitted sender) receiver=protection.outlook.com; client-ip=185.231.240.75; helo=relay.sw.ru; Received: from relay.sw.ru (185.231.240.75) by DB5EUR01FT046.mail.protection.outlook.com (10.152.5.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2451.23 via Frontend Transport; Wed, 13 Nov 2019 09:36:58 +0000 Received: from finist_cl7.qa.sw.ru ([10.94.4.83] helo=finist-ce7.sw.ru) by relay.sw.ru with esmtp (Exim 4.92.3) (envelope-from <khorenko@virtuozzo.com>) id 1iUp57-00064o-IS; Wed, 13 Nov 2019 12:36:57 +0300 From: Konstantin Khorenko <khorenko@virtuozzo.com> To: Andrey Ryabinin <aryabinin@virtuozzo.com> Date: Wed, 13 Nov 2019 12:36:56 +0300 Message-Id: <20191113093656.15674-2-khorenko@virtuozzo.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20191113093656.15674-1-khorenko@virtuozzo.com> References: <20191113093656.15674-1-khorenko@virtuozzo.com> X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: SFV:SKI; SFV:SKN; SFS:; DIR:INB; SFP:; SCL:-1; SRVR:DB6PR08MB2823; H:relay.sw.ru; FPR:; SPF:None; LANG:en; MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b696c599-0dc7-46e6-4a08-08d7681d0763 X-MS-TrafficTypeDiagnostic: DB6PR08MB2823: X-MS-Exchange-PUrlCount: 1 X-MS-Oob-TLC-OOBClassifiers: OLM:311; X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?6KmfqK0kBPpsocbwX66O0YKdshjOJIen0UWtbBpIGRk/S9f9SMybJlRQjbHP?= =?us-ascii?Q?+1Q1dgQhXMZ45A3sRIbROaccq0oOyyq3bgpuXzHi20mWRMJ4LNSzov5/gqvG?= =?us-ascii?Q?CR3aujlDsMNLmug+YALV4yWaatwKqdwaI4lnz3/XXOoCD9mcsfJYOGenXk5k?= =?us-ascii?Q?NRNLL8QCJGKfSzkPxtVQORRGa1WtJgcelhGbpaa5OD0iZnsHBtZMqZeAlU/j?= =?us-ascii?Q?KpqrkmSdahm+m/3dXcLd2VpdQcfnO7JNgqNbfuDCto1wUNKJ3OQLgHvzzpj3?= =?us-ascii?Q?iHEulUxWFif1O4nDSRC6/Elh+58sS5xr+YD3WTdzVHdBY/9vB4A91IcdIr8c?= =?us-ascii?Q?KWoGwP/JcwKiwohiRYsThlp4GfBkMpMqmvwFuJ5hqpkltpZLJCeNPwrrNcsR?= =?us-ascii?Q?r1v+2QLTKpYeuvaqlJdZ2FTGsw3JVgFOawmcbefQI+E6t6UWp+X+Y4AmXaFr?= =?us-ascii?Q?m4sAaikzuTLPWly827qPesVw57MBOo4x6A7qE9mwzZQDN6Ex5nmgz6QALGYD?= =?us-ascii?Q?bi6aUX1ApbTBFPoZ7KpfKYszcbTHDC2abVwnGzB7lokgH3eiBBByoiB5z6f6?= =?us-ascii?Q?wo0P+fhiRdRaiAx1BOA4Y4Qfbo2IG4eZreoebamnTgMpbXxFotLu55hsupnz?= =?us-ascii?Q?Mfjb36R/BT7fw6x7sf2OklpefCpCpMHhYA25//xSlhNYsJoK7Ig3J/YdAdKh?= =?us-ascii?Q?x0MV6EfZMv9JmSKG+fI9nFDuryb1dcgJnEUA8EAHpLNFzK4OeB+/y4iY2l5s?= =?us-ascii?Q?5wLmsx5K/Jbaa74w9L36pAW1dEiOpVxmnaP253mmM3TmshXRmG3bUdsylFSL?= =?us-ascii?Q?ER91VVScvscofazxJzFt2mxr0baYYIA8WewhQ0tpZM4lFQRWhCsZnoyMgc4K?= =?us-ascii?Q?EcrjNR0JzEkXpXF76Nlh8Izxox0bLUUZZ2d6A0+nqi15UZWa9kYObHsOofeh?= =?us-ascii?Q?vqTlZZKaKlL+y9aYnZ+vDki8/c7rNP5DnoUwVxIRoRR7G1pfUiTMFVNUaVTa?= =?us-ascii?Q?IxXpiWc+Q/5TxAe6b4FJXcH1t/22j8C5TV25bW5EDB/apnl8bSMBPZpC6RYu?= =?us-ascii?Q?f11LRCvCS6XdymJgwf1yf5SMBAC3G/IM9SCxGRFwjveiT/sRPciXFndTlaiD?= =?us-ascii?Q?RER341WyI9VF2Ct8GKzQyDMf2QBe3SSuLA=3D=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Nov 2019 09:36:58.3482 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b696c599-0dc7-46e6-4a08-08d7681d0763 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0bc7f26d-0264-416e-a6fc-8352af79c58f; Ip=[185.231.240.75]; Helo=[relay.sw.ru] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2823 X-MS-Exchange-CrossPremises-OriginalClientIPAddress: 185.231.240.75 X-MS-Exchange-CrossPremises-SCL: -1 X-MS-Exchange-CrossPremises-AuthSource: DB5EUR01FT046.eop-EUR01.prod.protection.outlook.com X-MS-Exchange-CrossPremises-AuthAs: Anonymous X-MS-Exchange-CrossPremises-TransportTrafficType: Email X-MS-Exchange-CrossPremises-TransportTrafficSubType: X-MS-Exchange-CrossPremises-Antispam-ScanContext: DIR:Originating; SFV:SKN; SKIP:0; X-MS-Exchange-CrossPremises-Processed-By-Journaling: Journal Agent X-OrganizationHeadersPreserved: DB6PR08MB2823.eurprd08.prod.outlook.com Cc: OpenVZ devel list <devel@openvz.org> Subject: [Devel] [PATCH 1/1] kernel/module.c: wakeup processes in module_wq on module unload X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development <devel.openvz.org> List-Unsubscribe: <https://lists.openvz.org/mailman/options/devel>, <mailto:devel-request@openvz.org?subject=unsubscribe> List-Archive: <http://lists.openvz.org/pipermail/devel/> List-Post: <mailto:devel@openvz.org> List-Help: <mailto:devel-request@openvz.org?subject=help> List-Subscribe: <https://lists.openvz.org/mailman/listinfo/devel>, <mailto:devel-request@openvz.org?subject=subscribe> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org |
diff --git a/kernel/module.c b/kernel/module.c index ff2d7359a418..cb09a5f37a5f 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1033,6 +1033,8 @@ SYSCALL_DEFINE2(delete_module, const char __user *, name_user, strlcpy(last_unloaded_module, mod->name, sizeof(last_unloaded_module)); free_module(mod); + /* someone could wait for the module in add_unformed_module() */ + wake_up_all(&module_wq); return 0; out: mutex_unlock(&module_mutex);
Fix the race between load and unload a kernel module. sys_delete_module() try_stop_module() mod->state = _GOING add_unformed_module() old = find_module_all() (old->state == _GOING => wait_event_interruptible()) During pre-condition finished_loading() rets 0 schedule() (never gets waken up later) free_module() mod->state = _UNFORMED list_del_rcu(&mod->list) (dels mod from "modules" list) return The race above leads to modprobe hanging forever on loading a module. Error paths on loading module call wake_up_all(&module_wq) after freeing module, so let's do the same on straight module unload. Fixes: ms commit 6e6de3dee51a ("kernel/module.c: Only return -EEXIST for modules that have finished loading") https://jira.sw.ru/browse/PSBM-99356 Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com> --- kernel/module.c | 2 ++ 1 file changed, 2 insertions(+)