Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp3909939pxb; Mon, 4 Oct 2021 12:24:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwVrzbM/J93yGIVdJWQGhyu3FKwx7Kax1uefB8jA5a4BaefBuIxLMPkiwZBf9ul/JD7xGXF X-Received: by 2002:a17:902:ee45:b0:13e:85e8:c329 with SMTP id 5-20020a170902ee4500b0013e85e8c329mr1280720plo.67.1633375460004; Mon, 04 Oct 2021 12:24:20 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1633375459; cv=pass; d=google.com; s=arc-20160816; b=APjCckARtli/UxNsqmP7u7X99aQeY3QDlQ04ON7lKzBWfcaU1YKUX5TIxxdhE64t6M tpS8xZtpl1g9C0QHH9PTnbRyG2JlfMnovoI43kvjTlfbmwpPDCQ8IRM9ipcHCKYOX4We knIe7Ep48pBTJhgdgbtQJJPdkoUAODBj2sl5mcmQN310muOvLJA5QIcSAxKJcG7+Txmr ztIZ6LIYgtz+vHX26joOfOJBYBBUsCPt/FVfOOIRCr5wljeq7ZLtL7kvJI9o9/VWB7El opB3Vmgo0bG4RpSsGya086fRE+CEwLx6fU6efHTnbzCPlNynD/uoPG0634//IAvgh7wh XlAQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=nAeNGpdqNwknXbpBvtyf9vLnlg0oE/2TsaWbrLzTS88=; b=VnhJo5v2MGER91LxbXtAj070fmPbn7CHyCvVrATqGCrf8wkc3knSP9/iKUickjwun6 BTWCkKgx+wtpja3pyVH7nNKAh9Vhj/glq3QuGQ3ciS9HIwM5OftrmT4r7X+PVzoz0Thg /8MUjMZgr2UCXFGQywB+BvOkStsHC6ONtrE4KJ4w2kRyPCC76JtAPU+ArTrqY2xIJpgo ko64dy6u+US08ibJNf1ArwT/ERnDUOVRkI1KreeyDJ17eqw2oLW6KIApQLZZcyz5XyhP lGgBAUusI6wcU0vlECLDakXWWa8JVyJTgqyQQtX/N41MLJNV1fN7lbLr1KiOV8mLZ9sM ezuQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2021-07-09 header.b=ZlXq7R5b; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=j2MARcsl; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id kk14si23477876pjb.117.2021.10.04.12.24.07; Mon, 04 Oct 2021 12:24:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2021-07-09 header.b=ZlXq7R5b; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=j2MARcsl; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238854AbhJDTY2 (ORCPT + 99 others); Mon, 4 Oct 2021 15:24:28 -0400 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:13700 "EHLO mx0a-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238562AbhJDTYN (ORCPT ); Mon, 4 Oct 2021 15:24:13 -0400 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 194IR8iL004481; Mon, 4 Oct 2021 19:21:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=nAeNGpdqNwknXbpBvtyf9vLnlg0oE/2TsaWbrLzTS88=; b=ZlXq7R5bU+0Xp6dsGOLH+n6oAWA8KWCx4MxcSEsaVx6vBow9gY3O+GrhoSX1fRgIbqj/ PFuT+3YzlWTeH9yvGsfs4RYWjBv9DdaJsInYMPK9XDK8NQvOrD6I70d8oAZzrHiPq0yz SNz+jRXcZlvuFOccbMBqArzG1SxHIwi91jKLsjvN9ikIW2lw/slONV04V30GghPWV5Ou 3nO21AMJ7eBY7YmRk5IEfpcLMratMGMweEjQ3uel6HIxUxAR4OIm9u0F/D0djhaa3Jfr BLfK/HRf5oNY5pFTa45YyJ7iktysgk+qMgB11Dxk6n7yYCWwdCVU8sIV/JFNyknmzjXP kg== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3bg43dst5h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Oct 2021 19:21:44 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 194JAbko095280; Mon, 4 Oct 2021 19:21:42 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2103.outbound.protection.outlook.com [104.47.55.103]) by userp3030.oracle.com with ESMTP id 3bf0s5c7jr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 04 Oct 2021 19:21:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kr5QYT5+T2Lj6NjH2rbMACtl5UxOQJAuMO3wM+KqyrEJGYzIgyIybripQe/rSxUsUL27GnRaz0ALokiIL4KDcdcSq9zLVNvvNKlxv/4mAEo0jBBhx4aGJA9xAFF+6+QWd1th1STpRL1n8gVl9NdPjAoXDGV6bz0di0OfcYARMAaaRHrUGYoR1yhHdGl+qiaAU9tRsNM6CHVXhfNd7TSpeIjYLEO9MssWO1Y9i3PX82zU2SY4IHtr1ANxbIeDCLPTYGObyGylWEbpbHVdgppQbrv8r0NC/W84/bmEKgdGJQDXWP5KoUCoMOB+dCLTXgFPXeQR1AtFlOaohvRJT/BbaA== 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=nAeNGpdqNwknXbpBvtyf9vLnlg0oE/2TsaWbrLzTS88=; b=OTrmhum38GK8aQ8g/Wy9cwQkZeruGHhWTYXnSv0G3Tf/5mQ3WHwKPQI/fHDxY7a9L537kwn+BUidmAJ2uDvKnVsddkkQaXQQdRe9Ap/P4kPcZ90xdJFuZJyfgScku0i2MAGJ0RlVwkRpOIW4DjvA3j0F/EO8/ygsVwUXLWrEg3Lxjk10Vdr/19BKFeb0Wqc2Y4ZC3dCopSUDTDrTvB36sOgmbMc0dhnArE1I7RZABcSybqraEy/5NC+xAk57RrLsTqNpBkLJpwDLuBpREFRACBK+63t6b323INIV8aGwNMWp6m5pT4mXbhbXuI1VzOLSk8tBtrTGwuJRZOAIwzfn9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nAeNGpdqNwknXbpBvtyf9vLnlg0oE/2TsaWbrLzTS88=; b=j2MARcsl5XsNlklqi9AIwKTqzXFDc2RHxqUq2vrH8rcQGtVDNTu3hR3HdZTwJwkrjlZUkafWd9CsySegueZUIWmnGfXm3dm/AJoMlmbxlxBtOOxliT2zYGCIdRdlLqnPveeEYyct4CbG7ITXhLL0kh2lxXJbVc323WP8jtdvXzY= Authentication-Results: linux-m68k.org; dkim=none (message not signed) header.d=none;linux-m68k.org; dmarc=none action=none header.from=oracle.com; Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by DM5PR10MB1548.namprd10.prod.outlook.com (2603:10b6:3:13::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Mon, 4 Oct 2021 19:21:40 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::195:7e6b:efcc:f531]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::195:7e6b:efcc:f531%5]) with mapi id 15.20.4566.022; Mon, 4 Oct 2021 19:21:40 +0000 From: Mike Christie To: geert@linux-m68k.org, vverma@digitalocean.com, hdanton@sina.com, hch@infradead.org, stefanha@redhat.com, jasowang@redhat.com, mst@redhat.com, sgarzare@redhat.com, virtualization@lists.linux-foundation.org, christian.brauner@ubuntu.com, axboe@kernel.dk, linux-kernel@vger.kernel.org Cc: Mike Christie Subject: [PATCH V3 4/9] fork: add option to not clone or dup files Date: Mon, 4 Oct 2021 14:21:23 -0500 Message-Id: <20211004192128.381453-5-michael.christie@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211004192128.381453-1-michael.christie@oracle.com> References: <20211004192128.381453-1-michael.christie@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: DM5PR15CA0034.namprd15.prod.outlook.com (2603:10b6:4:4b::20) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 Received: from localhost.localdomain (73.88.28.6) by DM5PR15CA0034.namprd15.prod.outlook.com (2603:10b6:4:4b::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15 via Frontend Transport; Mon, 4 Oct 2021 19:21:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 33eecfd0-629f-49ee-34c2-08d9876c30f4 X-MS-TrafficTypeDiagnostic: DM5PR10MB1548: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dQVzzACmChzTGSmLCjYYQbNkF5FPVHuVSgHuRGmvAoUqiDE/oZ1fFhs2ZW14lFugUfOqk1YvSwVsYSrahsi4wWXQBWWkAf5h7ScxFtDbletthAeukEip3L6WFTc4L8VbfQGIN3stwL6yDABUw207haRsKvlJ7xDximaTauojpTWrGGQqV5kxwUUXmUZXiiC4FzceNqZ4B4PXT6t27UV8LyT7FddgqF1V48AkKqIq8h0H3wQrpPTiJd0ahTuhCgjQluO1zrePecuW5j4QzjI7ADiGP8gnFoYoEyjr49Sk3W8Ly3/OAilTx0g9ZHUsrz0+V3lmFRPTI9En/eZ+w9+WgcqgBn9XBR/6xqbJuSVnLQdw5MmVdIcXg6vtVhmLOpsxHNfr2c4n8WQisyVkIbgk7TeWsTZtvdPObwmcdB86by7UULKZjZQu643Ew+UHBJ3EZSQsZ4yPdHfBQhvWGlI+FXNhqhURawOUwrbBZCtFeFMPMhPw2hYDkcm6yvTN3BqwhiidXlYNpEa/l7iV6Bw5NpW61mKrE02USNycotFW0IxLP+Nomb/BLY6Cm7JZGEu8we0+ZCekF/5/QoD9YuU7sFJzO7aDRujxRt3TOezCItau10ycIrQ3AokMl1JpoWRPKtgofXodSkqsF6OkhrCx5PFvpxQO8+2loYXC7+5lBKvcuc/vCzp6igVOMN8bzjP0ZRZ+bZekXR+gejwJNZkJcTr3qe3iJgEPBn3kHzQqD78= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR10MB1466.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(83380400001)(8676002)(921005)(7416002)(186003)(38100700002)(38350700002)(6506007)(8936002)(4326008)(26005)(508600001)(2906002)(6512007)(6666004)(86362001)(316002)(52116002)(1076003)(36756003)(66476007)(66556008)(66946007)(107886003)(2616005)(956004)(6486002)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hBddA39DV5kxT2Dw/in2mtYbqpOP6QO1o7uDw8eTqyKhHOzwLnq8rSohQujb?= =?us-ascii?Q?FkzBjDhokfg/K8lqfAuzLJlzwHgNLdGHvixCl1Pwlw3c+YSKtUvcwwxnblk0?= =?us-ascii?Q?B8HtNCfqUCcb805W/Bshhj+KbgV61tJUjBoUfMjveBOwoAbVwhfcKL5Md2nF?= =?us-ascii?Q?v6c08RibOBww0KyI2oJ/s5Pt5rFZnP9CcOURgWJcUpV3XSwy0fhnpQhojDi+?= =?us-ascii?Q?EBwBMbKAOAJWyLXRvQf/Y3kjlMcun42BASZjESqQk72nBJfqZMWA5Qdu2mkp?= =?us-ascii?Q?y7MNCjRIdlWmHoVfNj/+2AjYVf4zMi+k/BzsC20qgksc/TJuSe/iZguesq2e?= =?us-ascii?Q?/uTtXEb59G8B3J8D+p2BwtgUEnB2sTn6nbl4bWPY29kFPNlkhKs5tkBoyUI+?= =?us-ascii?Q?3tpX2YPCwkkAyHzCLfjLDvD8rW/j1fRRNfREqhbqhWb+kV4Z8C8DvNTPy+Iz?= =?us-ascii?Q?NXmoOf3cKOutAtEjNstiIo5DL3iH0tSvOMTH0AeEwveKKmd5cRs+l4Tu4EWS?= =?us-ascii?Q?BVqkh6RrgYSNky+xA3pphITI1x3xmjqcUFVYWkshGGtr/9k/5ZYMHpeRV7WZ?= =?us-ascii?Q?bqe+UhCiWY9+MNeyJtIKHe0CTKHhVPIxGxFGOD0tRuu1S1WfgkQCd/zRkC38?= =?us-ascii?Q?3ivyP1SgGXA+pz6/dLKB0bbdQPo+F7v5vf+1iFJ8C286gWcoDJKJ+RPweAfW?= =?us-ascii?Q?GTE35lqhaENbzK7ohWKtr4bIb31RK7dN8WXniKM5EV60LEHfuopi5HDuJMGH?= =?us-ascii?Q?/Yj6w3mU9Wx1r7ubza+O5e1xcgV/2pw+QjiwmI/oLSzU7quJkMXfb7NKtGXd?= =?us-ascii?Q?yf3eNbQHP78DIMIOXE/zgYj1r1ekP3ZduHbTLGm8iUPZwv3H9e5yQDqSn7OR?= =?us-ascii?Q?BJ9ndY3T+BC9wVNksPPHgPghe7YVkhLtecxsLD0+DHHCHc0ntT1F65yePwSj?= =?us-ascii?Q?YVPCtTqcKzt2+EZIduTB5SdMjHxKKJguMlskiCZIrYZvVCv3XkiVTktugh9H?= =?us-ascii?Q?yNhc31sNeI3TdF9Jb7lDWNWEdBwVIfKZvEycn28NVsP4EQiaC3XGEAeKzB2I?= =?us-ascii?Q?mwkD3wcUmgKg6MHna3CKojGC+sW5sn7SyE3hTd9kEBcoE22SZCS230trop3M?= =?us-ascii?Q?skZptTZm+QBdZ6X0DqVgYfxgDaxKZPjANs/Pg5oP5XA3C/tTz0zsiEIRISzj?= =?us-ascii?Q?rValpKr0dJ1/K+SVAFr3MxP98DWhNnEmsQrhDIRxl1zhvyQZyFPI2FTQaYXD?= =?us-ascii?Q?Hxliz8bsddZ7H1LXunrdiFPpbcJjP7UtIP+r57CgjCkc4eyoGFN/+I1pTu8v?= =?us-ascii?Q?paNfudA7SWJ3V91m6NYFcUbD?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33eecfd0-629f-49ee-34c2-08d9876c30f4 X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2021 19:21:39.9513 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CUxQccJktKcaTYq2YoJ6X6cSZU7/ggYoM/1gEyjIwfJMMiAIpRhnQIT0vGlYveUbLnKMW6Si+aP1Jzr0J9ppW4iMBaoSx+/jveJbcxf9hWs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR10MB1548 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10127 signatures=668683 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 adultscore=0 mlxscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230001 definitions=main-2110040131 X-Proofpoint-GUID: tTaJp9WeRUNuDrkxcwix7o1PLY9Es-g2 X-Proofpoint-ORIG-GUID: tTaJp9WeRUNuDrkxcwix7o1PLY9Es-g2 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Each vhost device gets a thread that is used to perform IO and management operations. Instead of a thread that is accessing a device, the thread is part of the device, so when it calls the kernel_worker() function added in the next patch we can't dup or clone the parent's files/FDS because it would do an extra increment on ourself. Later, when we do: Qemu process exits: do_exit -> exit_files -> put_files_struct -> close_files we would leak the device's resources because of that extra refcount on the fd or file_struct. This patch adds a no_files option so these worker threads can prevent taking an extra refcount on themselves. Signed-off-by: Mike Christie Acked-by: Christian Brauner --- include/linux/sched/task.h | 1 + kernel/fork.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index cf7c9fffc839..e165cc67fd3c 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -20,6 +20,7 @@ struct css_set; #define KERN_WORKER_IO BIT(0) #define KERN_WORKER_USER BIT(1) +#define KERN_WORKER_NO_FILES BIT(2) struct kernel_clone_args { u64 flags; diff --git a/kernel/fork.c b/kernel/fork.c index 4b0e8257993b..98264cf1d6a6 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1532,7 +1532,8 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) return 0; } -static int copy_files(unsigned long clone_flags, struct task_struct *tsk) +static int copy_files(unsigned long clone_flags, struct task_struct *tsk, + int no_files) { struct files_struct *oldf, *newf; int error = 0; @@ -1544,6 +1545,11 @@ static int copy_files(unsigned long clone_flags, struct task_struct *tsk) if (!oldf) goto out; + if (no_files) { + tsk->files = NULL; + goto out; + } + if (clone_flags & CLONE_FILES) { atomic_inc(&oldf->count); goto out; @@ -2179,7 +2185,8 @@ static __latent_entropy struct task_struct *copy_process( retval = copy_semundo(clone_flags, p); if (retval) goto bad_fork_cleanup_security; - retval = copy_files(clone_flags, p); + retval = copy_files(clone_flags, p, + args->worker_flags & KERN_WORKER_NO_FILES); if (retval) goto bad_fork_cleanup_semundo; retval = copy_fs(clone_flags, p); -- 2.25.1