From nobody Fri Sep 12 07:03:35 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA747C636D7 for ; Mon, 13 Feb 2023 01:00:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229644AbjBMBAn (ORCPT ); Sun, 12 Feb 2023 20:00:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229629AbjBMBAj (ORCPT ); Sun, 12 Feb 2023 20:00:39 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F381A9756 for ; Sun, 12 Feb 2023 17:00:35 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31CKGK7l015576; Mon, 13 Feb 2023 01:00:31 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-2022-7-12; bh=JyY3HlAKFr3Os6KFH4leQ+g7J5pId9CeZgcsxYtDMVE=; b=I7E5Tzy5iaS/d43IKOkZsBieVgeg+e5LiSc1/5RJQo7OSra8lTxjZVCkdLE6X18IR0Dl vPsi1WQ59y3gTmxuxKSHY9AvBCsbsMjP6ULTbiX4/t4R6W1qq+IoflKNhewpebBJx0G/ ktGTCC8p1T4UXbSMJboAi1wfMeSTSVszhoXqbFQ0K76qzVLnHzXNyglr7/HyPfMYoLda qgwVRK2yhTTuLcCqfwrRGaY1ygsD4SsfFjM0l3/xQIEtSdGfXsMNjs63mYUfcAT/3Iwt Xak3K5mHTXIbOPipBgIei9mhn5LG/x2JAjxiTwJXgfwnMwmg+PH0nwV2mllg5BauAcOz HQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3np1t39pjt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:30 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31CNiFIp017820; Mon, 13 Feb 2023 01:00:30 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2040.outbound.protection.outlook.com [104.47.66.40]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f3y2an-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PJR2cn6Zvp6Y8MDBr+loo7FNF8N6f2H+jCmFIYwJsW4T0yhSnNF3f91RPSJ93PTwZ4vvhfREJ6b8U/ASa4g4fgSWgAn8ULe5qMWJWuSWOkjCijGf7Qyr9DJjYiwLekZIVIDeEfhfgXZZQaqxUkxtbQRECXyI6fkX1TCjlb/Cn1nljMwmU4M+B4g9CKMufwyCXWIpJPb52GR3aFsUqWxtZf3T4j2GWZlxHoYcetmABllThgT+CKsjU/dqUGFKBXhq2kWDkWGwBvE+Rz5XhPY1ZL0GoWwfjk0OffNpa6QCpQsleRNl4FXd9ATUlU+nM7G7y7aLuoftjgJjynj8a0rnwg== 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=JyY3HlAKFr3Os6KFH4leQ+g7J5pId9CeZgcsxYtDMVE=; b=V4mue2xQ08SJCmXqGvHSB0fDG+kxprTjrksXV3mFQSzKz3div3ADSb8WzNj2PYplNFmjpDWUEpreIjLhRHE2KhQykfmwLCSKSr2PUnKgJvrFBvUK0ATgHcHn8PL3Q20aYtz0Z6ObGKTtqPD4IegwKR3GqMmAvj/39fLphaNL6FMPAMuQamanfLt7KV1EJnlW1fWJGTEFNntOTMepexs21NWOKFFFZfkab+ta2mweu3/Jb2umBksWjsjArJITFqgifhtyiQNgXdWkDbIlY4P7FZAaELPPNuYQW/NOZsU1uhyUYCNzrIyrtx20O2bgPl+58ZWS199ncotu25JCIdwwIg== 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=JyY3HlAKFr3Os6KFH4leQ+g7J5pId9CeZgcsxYtDMVE=; b=z1tT+i5ZXJlkObZ9NjxHqvOsJBubHpXY1qRUPULI/heSJ2Ly8UYAHzG9B+HCxNqyk0GoNtfdAselE9pfiRmfmlidkBwPXdDeBH3WwVv4p7K9rad15s73SLMaco3xq6WavoSPdoMzC7AUBk67RsX0bGGgbnIx6+IvCSbLZYGnLF4= Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by CH0PR10MB4921.namprd10.prod.outlook.com (2603:10b6:610:c2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.10; Mon, 13 Feb 2023 01:00:27 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f%5]) with mapi id 15.20.6111.009; Mon, 13 Feb 2023 01:00:27 +0000 From: Mike Christie To: brauner@kernel.org, ebiederm@xmission.com, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org Cc: Mike Christie Subject: [PATCH 1/5] kernel: Move kernel_clone_args's fn to new struct Date: Sun, 12 Feb 2023 19:00:16 -0600 Message-Id: <20230213010020.1813-2-michael.christie@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230213010020.1813-1-michael.christie@oracle.com> References: <20230213010020.1813-1-michael.christie@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0142.namprd13.prod.outlook.com (2603:10b6:208:2bb::27) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR10MB1466:EE_|CH0PR10MB4921:EE_ X-MS-Office365-Filtering-Correlation-Id: f95e0ef7-da0f-4e3d-223e-08db0d5db1b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UZPmkzqJesbWHpEmpYKskue712umaVfRZPa1ZARep2CKJOcklPwrM9Qfwv1+fX85mDkhPAcWrfXWAosovVRVfxIGc8R/3UZoVaYlgQwRi1Oc/Tfump/HCe7aRYLBW11pNGf1KqRMW/yE8/833YXwdE4liiJ6n8Q+bGm1oaqMFpftyGKtlEZcMKQFDgdA0dg/8lUo/ftFSJwCeV9yz5DZ2yfhzpTRDWcgdGBFcvNZiicu+/oLYmeDIoAi2TLXl7Ht/5+q2+nbBM6UNJxd58CWOWV/CIqFzbZ9v6CtiDhvmPAulJUN7pcbXtngrD6aKfqBfJ7GQkTOPE8Ig1DRcfzMbs1LJku/6a1t8fXF0erlkxU0QahoqRhwo8egnGeCPHuMlSUMcka9Ufb9UWDYm5vtOmXcGb7oqYwhYBe05ijFa/MvGBgXfQN4QATyUC/XtmYrl4ASh710z/DbY8MPxcKdEX6J5TZmlzvp6IVE/VA1J/oOcWdTncKLnrfuyCFCJmSUW+oAWEUvTJGL17AuigdJmk+bUH5/QsavUBTALycKqViQ5qn0mncezXD6dXBfiztasHgucQTZ9QYyAaPDd2XBd/o6OyXtov91tkQdFCe6/4DCSryGed59/VIyEIUI3XgAIpN2DoNydYKbjNOTyBZe3Q== 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:(13230025)(366004)(396003)(136003)(346002)(376002)(39860400002)(451199018)(30864003)(8936002)(36756003)(2906002)(5660300002)(86362001)(2616005)(83380400001)(4326008)(316002)(107886003)(38100700002)(66556008)(66946007)(66476007)(8676002)(41300700001)(6486002)(478600001)(6666004)(1076003)(186003)(26005)(6506007)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FKpRXU6+OaFDPwvECOow1Y7P4LPnYE+H1ciPHWAmAOn2q7rOANLJdqbs/WWk?= =?us-ascii?Q?kEbtFTDyBMrwN5swyRe+vufxW4EbTZJB8nONSI7nke6+GI5xpmsU2P2I22I1?= =?us-ascii?Q?PG04TGOc1PAc0U1twcj+qN3mrquMeHURiT9T4nr7lTtUgvoJmWBJ/BTKQFoh?= =?us-ascii?Q?H9iLt3IyP4nOuVhEMGQw7D4yhKVkz2/JUAOhB71+glSPCuhVsFQidF0IT2aj?= =?us-ascii?Q?aaV8Qie6sQT5pE1/9Dwl1NACgD8TTNd9Z4lyepAzJgN21lt7v3+N2IafsdCN?= =?us-ascii?Q?MeSjA6nvR4vQZvYUCtgRpHztPaftSFfm4e2/QBHKUdo+lhytfPl1n/Ap7mYF?= =?us-ascii?Q?/kAHl9ewdKmZO/iDOQjUJx6RQbo/ZDoe1DvIIu52DJaJf0YRDJDHLwkBmkWy?= =?us-ascii?Q?smNXhecYR8CcF4QYNGdrlYuAsPYL0UQ6VYzuu0yjbzjSX/UE6ndOzjf6c/GU?= =?us-ascii?Q?uF5D5F1BeDkgSBe/maZExQJQu7m+krQk/GoMHVebZOfTwnKwXpklgp7y9fAF?= =?us-ascii?Q?fWPW97R+ChKFzQEyp60dxZic4mhK5Cv6MHImbnqav6qIO7rQHyvzqqJjSTAJ?= =?us-ascii?Q?jAq1L4+UodkYQLB76HHHY+qq/tQIZ3g0zknJqhzz2qIRE/MJDIlou3thYUHw?= =?us-ascii?Q?9ReOwB8yLhv8DIXHq6/+YSRqa0uGGfjmNwh6JSIHMSePW9NoL060bHrNLZlH?= =?us-ascii?Q?lMpOg8YLPOEo63V+Y4wYF3eB44rz5eB+wEJ6EYNYFAe/uehh8Ecajgx5trpG?= =?us-ascii?Q?hN0uY69P4k4BLN3o+XL/QUWaRD3e2ohDMKrO/zsTVSjXNCjpwrzce3tlIdDR?= =?us-ascii?Q?y8mWrtSh/Vy/5fgV82w52U1VRPKKYwfkY55lqgt2MsFm3n1KJqkQ7ek9sIqn?= =?us-ascii?Q?QDCaKI1/ZSd6p9B273D8TDYoQGlKFVInb/Mubrf1g3Pk8RZt1jhGotKaJMvo?= =?us-ascii?Q?bASG4INfaoSEu5whMp5J2cZbSlmpBwJWzaea0I7ttD0W8AFglyKPfDbbfish?= =?us-ascii?Q?XRulxqPG+2iThKmbhSDZROrQILjRDfV41jqzd04byfqD7br/4cV1NOc/IZKx?= =?us-ascii?Q?38ZWxRbdKw8/O4buMBjw/bg83ZKQByFH1lpNSK8xPiB9mvtqVTgxYg3MUjp8?= =?us-ascii?Q?mbC4v6u4jTUn16zOKrKt7DoYqs9T3MKoM7sGY8Ki5q2v336Bxwm2eXiT1h65?= =?us-ascii?Q?NhOQWk5N1rJbGSO9hyNSj+b6sNx43AoolNcxh8vSeZBMEYN0/bhrO2e8Piqa?= =?us-ascii?Q?SmN5LhYmxjyybcRkUF59GJ4aohkOw8j0r6cPn3oJ3IXYBHxKI9ntMh0yVuEC?= =?us-ascii?Q?9ZN7cdf0sZcCQqYMcm7Bn8f2o52Hc6GMHXMuDoAQDdikc3cU6o5WEwGKGO3u?= =?us-ascii?Q?jkMHNZI6SaOX0smU7F4Q3wIwuaMc3FUP/sedltT7s+jg7EcYgWqIY/ns12H7?= =?us-ascii?Q?06NkOxXBYoCixxbnQn6TD++jEHPGSH1TJokCnM5z30OjGdHJWipk1BnBlloB?= =?us-ascii?Q?qUP6XcnE8z7Skf8F9ADapO49cXSIq8/4BPY4EyO42J6EoDujFIeJYu6vtLMs?= =?us-ascii?Q?pV6P1ox1xwZL9DRNItpEzFwNMBnVFgpbo0Fw4//aRwCTYex6c44Ha596V9ll?= =?us-ascii?Q?Mw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: eLsbmMBNqldeYpc6LAke7OdH5fLGKqHyYeSQZJqFsDawFrOQ2Sp7y0ai2XVd2B4zUnqzHhWl2rI2wfo3CXx9JI5mOv3ujIqXr/baPDCFCsEHbSOIxSqmH0xXxJXqxyrjrAymPo+ySzd749W/i2NdLamQwpHHDSWtxDkO/leLzTYxTBmgd67NlCoZHW4qFbnUBYmAdsk98NrAVYonOCJbJiXUj0ekpkf/DcXFM+qwmfcPvCymkjm2PI8hVNlngPoZaLbsrCf7n+m1cjkseZQzXll2Lk8VpmF4pa5OuFHuvVZ3vULDwv8gDrEJQF/6+9JCTMLMOWiw8IOWwlKeMua4jCDQsy4dEm0ibYTRod/Ma0GmGnOW0NLcFbecmvGQQ1Ou26jq79OHED+AKA2PrAbu2SDWHtMRQom2lOJT1EeO4Ua2ca4m11SiyqitcuY03zpQtJChTIHuSrOTrgnI4Zaltn7qsIKPQ9tN9mA5/jiU4bBVOvYf1tbk+ffPA3ic3l6d95NaG1GWaclk6ZfZv9W8sLWlgJQtpp/wzoF3JYrPu7h1NYn/ynYWVZkPr0H3a4LDxeBUivYBnKzwuCjVZFFZnoG/rnnQlbUfPWC4PGRdmjsAp5aCmrOxpEghTOkSS6112rkIHij3gjArupVA2nkdCOAbFK/W8pnIaoVHOQBAz9da6ypm+RzAZT/HarCOH4zs/rU/KiYZ1OF7vhL2x5fpBHx3TOhfx+xNdkQ6tdOGNy/LnBDEhEfJTT/yqnCGqmDuMgsy5B1w/vYfrWZyLvMIoROz5TpzvaqSqNE2TvUeAqqopRNTQJXarbi7hyDWeD4GLAMeEQ5Z+8x+vSMzm0kVnalA/OfNYH+DvuhqdSVoAkE4Tr2MQinDCwATtDtdAYcT X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: f95e0ef7-da0f-4e3d-223e-08db0d5db1b1 X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 01:00:26.9852 (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: sGjVr+kwPDsRO1qIWjmciZNmVKf+GfOGp9ywrQX9vUGkMrmOla5mtS5sAiQYYpkxLCRgiACdPR2iHItM52b0vG8NMybieB1PCGbn4zHEJAw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4921 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-12_12,2023-02-09_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302130007 X-Proofpoint-GUID: e_DCdeQ0kK0L0-h0rdLz7mn4Z65L5vFV X-Proofpoint-ORIG-GUID: e_DCdeQ0kK0L0-h0rdLz7mn4Z65L5vFV Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The next patches will add callouts to set the task's comm, and create internal resources. This adds a new struct to for these callouts to organize them and reduce the args passed into kernel_thread and create_io_thread. Signed-off-by: Mike Christie --- arch/alpha/kernel/process.c | 4 ++-- arch/arc/kernel/process.c | 4 ++-- arch/arm/kernel/process.c | 4 ++-- arch/arm64/kernel/process.c | 4 ++-- arch/csky/kernel/process.c | 4 ++-- arch/hexagon/kernel/process.c | 4 ++-- arch/ia64/kernel/process.c | 4 ++-- arch/loongarch/kernel/process.c | 4 ++-- arch/m68k/kernel/process.c | 4 ++-- arch/microblaze/kernel/process.c | 4 ++-- arch/mips/kernel/process.c | 4 ++-- arch/nios2/kernel/process.c | 4 ++-- arch/openrisc/kernel/process.c | 4 ++-- arch/parisc/kernel/process.c | 8 ++++---- arch/powerpc/kernel/process.c | 5 ++--- arch/riscv/kernel/process.c | 4 ++-- arch/s390/kernel/process.c | 4 ++-- arch/sh/kernel/process_32.c | 4 ++-- arch/sparc/kernel/process_32.c | 4 ++-- arch/sparc/kernel/process_64.c | 4 ++-- arch/um/kernel/process.c | 4 ++-- arch/x86/kernel/process.c | 9 +++++---- arch/xtensa/kernel/process.c | 6 +++--- include/linux/sched/task.h | 12 +++++++++--- init/main.c | 6 +++++- io_uring/io-wq.c | 8 ++++++-- io_uring/sqpoll.c | 6 +++++- kernel/fork.c | 24 ++++++++++++++++-------- kernel/kthread.c | 7 ++++++- 29 files changed, 99 insertions(+), 68 deletions(-) diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c index 65fdae9e48f3..3008c9d39b0f 100644 --- a/arch/alpha/kernel/process.c +++ b/arch/alpha/kernel/process.c @@ -245,12 +245,12 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) childti->pcb.ksp =3D (unsigned long) childstack; childti->pcb.flags =3D 1; /* set FEN, clear everything else */ =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ memset(childstack, 0, sizeof(struct switch_stack) + sizeof(struct pt_regs)); childstack->r26 =3D (unsigned long) ret_from_kernel_thread; - childstack->r9 =3D (unsigned long) args->fn; + childstack->r9 =3D (unsigned long) args->fns->thread_fn; childstack->r10 =3D (unsigned long) args->fn_arg; childregs->hae =3D alpha_mv.hae_cache; childti->pcb.usp =3D 0; diff --git a/arch/arc/kernel/process.c b/arch/arc/kernel/process.c index 3369f0700702..edda86c54634 100644 --- a/arch/arc/kernel/process.c +++ b/arch/arc/kernel/process.c @@ -192,11 +192,11 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) childksp[0] =3D 0; /* fp */ childksp[1] =3D (unsigned long)ret_from_fork; /* blink */ =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(c_regs, 0, sizeof(struct pt_regs)); =20 c_callee->r13 =3D (unsigned long)args->fn_arg; - c_callee->r14 =3D (unsigned long)args->fn; + c_callee->r14 =3D (unsigned long)args->fns->thread_fn; =20 return 0; } diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index f811733a8fc5..a1b28921f351 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -254,7 +254,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) thread->cpu_domain =3D get_domain(); #endif =20 - if (likely(!args->fn)) { + if (likely(!args->fns || !args->fns->thread_fn)) { *childregs =3D *current_pt_regs(); childregs->ARM_r0 =3D 0; if (stack_start) @@ -262,7 +262,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) } else { memset(childregs, 0, sizeof(struct pt_regs)); thread->cpu_context.r4 =3D (unsigned long)args->fn_arg; - thread->cpu_context.r5 =3D (unsigned long)args->fn; + thread->cpu_context.r5 =3D (unsigned long)args->fns->thread_fn; childregs->ARM_cpsr =3D SVC_MODE; } thread->cpu_context.pc =3D (unsigned long)ret_from_fork; diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 269ac1c25ae2..499aab54d56d 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -361,7 +361,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) =20 ptrauth_thread_init_kernel(p); =20 - if (likely(!args->fn)) { + if (likely(!args->fns || !args->fns->thread_fn)) { *childregs =3D *current_pt_regs(); childregs->regs[0] =3D 0; =20 @@ -399,7 +399,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) memset(childregs, 0, sizeof(struct pt_regs)); childregs->pstate =3D PSR_MODE_EL1h | PSR_IL_BIT; =20 - p->thread.cpu_context.x19 =3D (unsigned long)args->fn; + p->thread.cpu_context.x19 =3D (unsigned long)args->fns->thread_fn; p->thread.cpu_context.x20 =3D (unsigned long)args->fn_arg; } p->thread.cpu_context.pc =3D (unsigned long)ret_from_fork; diff --git a/arch/csky/kernel/process.c b/arch/csky/kernel/process.c index 2b0ed515a88e..50b417cca6be 100644 --- a/arch/csky/kernel/process.c +++ b/arch/csky/kernel/process.c @@ -48,11 +48,11 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) /* setup thread.sp for switch_to !!! */ p->thread.sp =3D (unsigned long)childstack; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(childregs, 0, sizeof(struct pt_regs)); childstack->r15 =3D (unsigned long) ret_from_kernel_thread; childstack->r10 =3D (unsigned long) args->fn_arg; - childstack->r9 =3D (unsigned long) args->fn; + childstack->r9 =3D (unsigned long) args->fns->thread_fn; childregs->sr =3D mfcr("psr"); } else { *childregs =3D *(current_pt_regs()); diff --git a/arch/hexagon/kernel/process.c b/arch/hexagon/kernel/process.c index e15eeaebd785..8c57762202e8 100644 --- a/arch/hexagon/kernel/process.c +++ b/arch/hexagon/kernel/process.c @@ -75,10 +75,10 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) sizeof(*ss)); ss->lr =3D (unsigned long)ret_from_fork; p->thread.switch_sp =3D ss; - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(childregs, 0, sizeof(struct pt_regs)); /* r24 <- fn, r25 <- arg */ - ss->r24 =3D (unsigned long)args->fn; + ss->r24 =3D (unsigned long)args->fns->thread_fn; ss->r25 =3D (unsigned long)args->fn_arg; pt_set_kmode(childregs); return 0; diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index 416305e550e2..22b3c75b895a 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c @@ -342,13 +342,13 @@ copy_thread(struct task_struct *p, const struct kerne= l_clone_args *args) =20 ia64_drop_fpu(p); /* don't pick up stale state from a CPU's fph */ =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { if (unlikely(args->idle)) { /* fork_idle() called us */ return 0; } memset(child_stack, 0, sizeof(*child_ptregs) + sizeof(*child_stack)); - child_stack->r4 =3D (unsigned long) args->fn; + child_stack->r4 =3D (unsigned long) args->fns->thread_fn; child_stack->r5 =3D (unsigned long) args->fn_arg; /* * Preserve PSR bits, except for bits 32-34 and 37-45, diff --git a/arch/loongarch/kernel/process.c b/arch/loongarch/kernel/proces= s.c index edfd220a3737..b5022c0defd2 100644 --- a/arch/loongarch/kernel/process.c +++ b/arch/loongarch/kernel/process.c @@ -146,10 +146,10 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) p->thread.csr_crmd =3D csr_read32(LOONGARCH_CSR_CRMD); p->thread.csr_prmd =3D csr_read32(LOONGARCH_CSR_PRMD); p->thread.csr_ecfg =3D csr_read32(LOONGARCH_CSR_ECFG); - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ p->thread.reg03 =3D childksp; - p->thread.reg23 =3D (unsigned long)args->fn; + p->thread.reg23 =3D (unsigned long)args->fns->thread_fn; p->thread.reg24 =3D (unsigned long)args->fn_arg; p->thread.reg01 =3D (unsigned long)ret_from_kernel_thread; p->thread.sched_ra =3D (unsigned long)ret_from_kernel_thread; diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index e06ce147c0b7..550a75b3d36d 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c @@ -159,11 +159,11 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) */ p->thread.fc =3D USER_DATA; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ memset(frame, 0, sizeof(struct fork_frame)); frame->regs.sr =3D PS_S; - frame->sw.a3 =3D (unsigned long)args->fn; + frame->sw.a3 =3D (unsigned long)args->fns->thread_fn; frame->sw.d7 =3D (unsigned long)args->fn_arg; frame->sw.retpc =3D (unsigned long)ret_from_kernel_thread; p->thread.usp =3D 0; diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/proc= ess.c index 1f802aab2b96..94138f7aec4c 100644 --- a/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c @@ -60,13 +60,13 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) struct pt_regs *childregs =3D task_pt_regs(p); struct thread_info *ti =3D task_thread_info(p); =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* if we're creating a new kernel thread then just zeroing all * the registers. That's OK for a brand new thread.*/ memset(childregs, 0, sizeof(struct pt_regs)); memset(&ti->cpu_context, 0, sizeof(struct cpu_context)); ti->cpu_context.r1 =3D (unsigned long)childregs; - ti->cpu_context.r20 =3D (unsigned long)args->fn; + ti->cpu_context.r20 =3D (unsigned long)args->fns->thread_fn; ti->cpu_context.r19 =3D (unsigned long)args->fn_arg; childregs->pt_mode =3D 1; local_save_flags(childregs->msr); diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 093dbbd6b843..45bc4bac3ba2 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c @@ -121,11 +121,11 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) /* Put the stack after the struct pt_regs. */ childksp =3D (unsigned long) childregs; p->thread.cp0_status =3D (read_c0_status() & ~(ST0_CU2|ST0_CU1)) | ST0_KE= RNEL_CUMASK; - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ unsigned long status =3D p->thread.cp0_status; memset(childregs, 0, sizeof(struct pt_regs)); - p->thread.reg16 =3D (unsigned long)args->fn; + p->thread.reg16 =3D (unsigned long)args->fns->thread_fn; p->thread.reg17 =3D (unsigned long)args->fn_arg; p->thread.reg29 =3D childksp; p->thread.reg31 =3D (unsigned long) ret_from_kernel_thread; diff --git a/arch/nios2/kernel/process.c b/arch/nios2/kernel/process.c index 29593b98567d..87135a1b64af 100644 --- a/arch/nios2/kernel/process.c +++ b/arch/nios2/kernel/process.c @@ -111,11 +111,11 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) struct switch_stack *childstack =3D ((struct switch_stack *)childregs) - 1; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(childstack, 0, sizeof(struct switch_stack) + sizeof(struct pt_regs)); =20 - childstack->r16 =3D (unsigned long) args->fn; + childstack->r16 =3D (unsigned long) args->fns->thread_fn; childstack->r17 =3D (unsigned long) args->fn_arg; childstack->ra =3D (unsigned long) ret_from_kernel_thread; childregs->estatus =3D STATUS_PIE; diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c index f94b5ec06786..cfd377832c2c 100644 --- a/arch/openrisc/kernel/process.c +++ b/arch/openrisc/kernel/process.c @@ -185,9 +185,9 @@ copy_thread(struct task_struct *p, const struct kernel_= clone_args *args) sp -=3D sizeof(struct pt_regs); kregs =3D (struct pt_regs *)sp; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(kregs, 0, sizeof(struct pt_regs)); - kregs->gpr[20] =3D (unsigned long)args->fn; + kregs->gpr[20] =3D (unsigned long)args->fns->thread_fn; kregs->gpr[22] =3D (unsigned long)args->fn_arg; } else { *userregs =3D *current_pt_regs(); diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index c4f8374c7018..a1f028dbb2d1 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c @@ -216,7 +216,7 @@ copy_thread(struct task_struct *p, const struct kernel_= clone_args *args) extern void * const ret_from_kernel_thread; extern void * const child_return; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ memset(cregs, 0, sizeof(struct pt_regs)); if (args->idle) /* idle thread */ @@ -231,10 +231,10 @@ copy_thread(struct task_struct *p, const struct kerne= l_clone_args *args) * ret_from_kernel_thread. */ #ifdef CONFIG_64BIT - cregs->gr[27] =3D ((unsigned long *)args->fn)[3]; - cregs->gr[26] =3D ((unsigned long *)args->fn)[2]; + cregs->gr[27] =3D ((unsigned long *)args->fns->thread_fn)[3]; + cregs->gr[26] =3D ((unsigned long *)args->fns->thread_fn)[2]; #else - cregs->gr[26] =3D (unsigned long) args->fn; + cregs->gr[26] =3D (unsigned long) args->fns->thread_fn; #endif cregs->gr[25] =3D (unsigned long) args->fn_arg; } else { diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index c22cc234672f..627efd7a5179 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -1761,14 +1761,13 @@ int copy_thread(struct task_struct *p, const struct= kernel_clone_args *args) =20 /* Copy registers */ childregs =3D (struct pt_regs *)(sp + STACK_INT_FRAME_REGS); - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ ((unsigned long *)sp)[0] =3D 0; memset(childregs, 0, sizeof(struct pt_regs)); childregs->gpr[1] =3D sp + STACK_USER_INT_FRAME_SIZE; /* function */ - if (args->fn) - childregs->gpr[14] =3D ppc_function_entry((void *)args->fn); + childregs->gpr[14] =3D ppc_function_entry((void *)args->fns->thread_fn); #ifdef CONFIG_PPC64 clear_tsk_thread_flag(p, TIF_32BIT); childregs->softe =3D IRQS_ENABLED; diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index 8955f2432c2d..2b8cf2f8ac4b 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -167,7 +167,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) memset(&p->thread.s, 0, sizeof(p->thread.s)); =20 /* p->thread holds context to be restored by __switch_to() */ - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* Kernel thread */ memset(childregs, 0, sizeof(struct pt_regs)); childregs->gp =3D gp_in_global; @@ -175,7 +175,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) childregs->status =3D SR_PP | SR_PIE; =20 p->thread.ra =3D (unsigned long)ret_from_kernel_thread; - p->thread.s[0] =3D (unsigned long)args->fn; + p->thread.s[0] =3D (unsigned long)args->fns->thread_fn; p->thread.s[1] =3D (unsigned long)args->fn_arg; } else { *childregs =3D *(current_pt_regs()); diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 3f5d2db0b854..b4cda7f71488 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c @@ -144,14 +144,14 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) frame->sf.gprs[9] =3D (unsigned long)frame; =20 /* Store access registers to kernel stack of new process. */ - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { /* kernel thread */ memset(&frame->childregs, 0, sizeof(struct pt_regs)); frame->childregs.psw.mask =3D PSW_KERNEL_BITS | PSW_MASK_DAT | PSW_MASK_IO | PSW_MASK_EXT | PSW_MASK_MCHECK; frame->childregs.psw.addr =3D (unsigned long)__ret_from_fork; - frame->childregs.gprs[9] =3D (unsigned long)args->fn; + frame->childregs.gprs[9] =3D (unsigned long)args->fns->thread_fn; frame->childregs.gprs[10] =3D (unsigned long)args->fn_arg; frame->childregs.orig_gpr2 =3D -1; frame->childregs.last_break =3D 1; diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index 92b6649d4929..ef7d7fd6a78c 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c @@ -111,11 +111,11 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) =20 childregs =3D task_pt_regs(p); p->thread.sp =3D (unsigned long) childregs; - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(childregs, 0, sizeof(struct pt_regs)); p->thread.pc =3D (unsigned long) ret_from_kernel_thread; childregs->regs[4] =3D (unsigned long) args->fn_arg; - childregs->regs[5] =3D (unsigned long) args->fn; + childregs->regs[5] =3D (unsigned long) args->fns->thread_fn; childregs->sr =3D SR_MD; #if defined(CONFIG_SH_FPU) childregs->sr |=3D SR_FD; diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index 33b0215a4182..a035775c47d5 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c @@ -298,12 +298,12 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) ti->ksp =3D (unsigned long) new_stack; p->thread.kregs =3D childregs; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { extern int nwindows; unsigned long psr; memset(new_stack, 0, STACKFRAME_SZ + TRACEREG_SZ); ti->kpc =3D (((unsigned long) ret_from_kernel_thread) - 0x8); - childregs->u_regs[UREG_G1] =3D (unsigned long) args->fn; + childregs->u_regs[UREG_G1] =3D (unsigned long) args->fns->thread_fn; childregs->u_regs[UREG_G2] =3D (unsigned long) args->fn_arg; psr =3D childregs->psr =3D get_psr(); ti->kpsr =3D psr | PSR_PIL; diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 6335b698a4b4..332253a742c9 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c @@ -586,11 +586,11 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) sizeof(struct sparc_stackf)); t->fpsaved[0] =3D 0; =20 - if (unlikely(args->fn)) { + if (unlikely(args->fns && args->fns->thread_fn)) { memset(child_trap_frame, 0, child_stack_sz); __thread_flag_byte_ptr(t)[TI_FLAG_BYTE_CWP] =3D=20 (current_pt_regs()->tstate + 1) & TSTATE_CWP; - t->kregs->u_regs[UREG_G1] =3D (unsigned long) args->fn; + t->kregs->u_regs[UREG_G1] =3D (unsigned long) args->fns->thread_fn; t->kregs->u_regs[UREG_G2] =3D (unsigned long) args->fn_arg; return 0; } diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 47830ade35ed..8e56c8c85707 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -165,7 +165,7 @@ int copy_thread(struct task_struct * p, const struct ke= rnel_clone_args *args) =20 p->thread =3D (struct thread_struct) INIT_THREAD; =20 - if (!args->fn) { + if (!args->fns || !args->fns->thread_fn) { memcpy(&p->thread.regs.regs, current_pt_regs(), sizeof(p->thread.regs.regs)); PT_REGS_SET_SYSCALL_RETURN(&p->thread.regs, 0); @@ -177,7 +177,7 @@ int copy_thread(struct task_struct * p, const struct ke= rnel_clone_args *args) arch_copy_thread(¤t->thread.arch, &p->thread.arch); } else { get_safe_registers(p->thread.regs.regs.gp, p->thread.regs.regs.fp); - p->thread.request.u.thread.proc =3D args->fn; + p->thread.request.u.thread.proc =3D args->fns->thread_fn; p->thread.request.u.thread.arg =3D args->fn_arg; handler =3D new_thread_handler; } diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 40d156a31676..0bbf55b90c0e 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -134,6 +134,7 @@ static int set_new_tls(struct task_struct *p, unsigned = long tls) int copy_thread(struct task_struct *p, const struct kernel_clone_args *arg= s) { unsigned long clone_flags =3D args->flags; + int (*thread_fn)(void *) =3D args->fns ? args->fns->thread_fn : NULL; unsigned long sp =3D args->stack; unsigned long tls =3D args->tls; struct inactive_task_frame *frame; @@ -173,13 +174,13 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) frame->flags =3D X86_EFLAGS_FIXED; #endif =20 - fpu_clone(p, clone_flags, args->fn); + fpu_clone(p, clone_flags, thread_fn); =20 /* Kernel thread ? */ if (unlikely(p->flags & PF_KTHREAD)) { p->thread.pkru =3D pkru_get_init_value(); memset(childregs, 0, sizeof(struct pt_regs)); - kthread_frame_init(frame, args->fn, args->fn_arg); + kthread_frame_init(frame, thread_fn, args->fn_arg); return 0; } =20 @@ -195,7 +196,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) if (sp) childregs->sp =3D sp; =20 - if (unlikely(args->fn)) { + if (unlikely(thread_fn)) { /* * A user space thread, but it doesn't return to * ret_after_fork(). @@ -208,7 +209,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) */ childregs->sp =3D 0; childregs->ip =3D 0; - kthread_frame_init(frame, args->fn, args->fn_arg); + kthread_frame_init(frame, thread_fn, args->fn_arg); return 0; } =20 diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 68e0e2f06d66..015720ce6e19 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c @@ -287,7 +287,7 @@ int copy_thread(struct task_struct *p, const struct ker= nel_clone_args *args) #error Unsupported Xtensa ABI #endif =20 - if (!args->fn) { + if (!args->fns || !args->fns->thread_fn) { struct pt_regs *regs =3D current_pt_regs(); unsigned long usp =3D usp_thread_fn ? usp_thread_fn : regs->areg[1]; @@ -339,14 +339,14 @@ int copy_thread(struct task_struct *p, const struct k= ernel_clone_args *args) * Window underflow will load registers from the * spill slots on the stack on return from _switch_to. */ - SPILL_SLOT(childregs, 2) =3D (unsigned long)args->fn; + SPILL_SLOT(childregs, 2) =3D (unsigned long)args->fns->thread_fn; SPILL_SLOT(childregs, 3) =3D (unsigned long)args->fn_arg; #elif defined(__XTENSA_CALL0_ABI__) /* * a12 =3D thread_fn, a13 =3D thread_fn arg. * _switch_to epilogue will load registers from the stack. */ - ((unsigned long *)p->thread.sp)[0] =3D (unsigned long)args->fn; + ((unsigned long *)p->thread.sp)[0] =3D (unsigned long)args->fns->thread_= fn; ((unsigned long *)p->thread.sp)[1] =3D (unsigned long)args->fn_arg; #else #error Unsupported Xtensa ABI diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index 357e0068497c..7a61ebbcdfe0 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -18,6 +18,10 @@ struct css_set; /* All the bits taken by the old clone syscall. */ #define CLONE_LEGACY_FLAGS 0xffffffffULL =20 +struct kernel_clone_fns { + int (*thread_fn)(void *fn_arg); +}; + struct kernel_clone_args { u64 flags; int __user *pidfd; @@ -34,7 +38,7 @@ struct kernel_clone_args { int io_thread; int kthread; int idle; - int (*fn)(void *); + struct kernel_clone_fns *fns; void *fn_arg; struct cgroup *cgrp; struct css_set *cset; @@ -89,9 +93,11 @@ extern void exit_files(struct task_struct *); extern void exit_itimers(struct task_struct *); =20 extern pid_t kernel_clone(struct kernel_clone_args *kargs); -struct task_struct *create_io_thread(int (*fn)(void *), void *arg, int nod= e); +struct task_struct *create_io_thread(struct kernel_clone_fns *fns, void *f= n_arg, + int node); struct task_struct *fork_idle(int); -extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long fla= gs); +extern pid_t kernel_thread(struct kernel_clone_fns *fns, void *fn_arg, + unsigned long flags); extern pid_t user_mode_thread(int (*fn)(void *), void *arg, unsigned long = flags); extern long kernel_wait4(pid_t, int __user *, int, struct rusage *); int kernel_wait(pid_t pid, int *stat); diff --git a/init/main.c b/init/main.c index e1c3911d7c70..d9889b67d9ee 100644 --- a/init/main.c +++ b/init/main.c @@ -683,6 +683,10 @@ static void __init setup_command_line(char *command_li= ne) =20 static __initdata DECLARE_COMPLETION(kthreadd_done); =20 +static struct kernel_clone_fns kthread_fns =3D { + .thread_fn =3D kthreadd, +}; + noinline void __ref rest_init(void) { struct task_struct *tsk; @@ -707,7 +711,7 @@ noinline void __ref rest_init(void) rcu_read_unlock(); =20 numa_default_policy(); - pid =3D kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES); + pid =3D kernel_thread(&kthread_fns, NULL, CLONE_FS | CLONE_FILES); rcu_read_lock(); kthreadd_task =3D find_task_by_pid_ns(pid, &init_pid_ns); rcu_read_unlock(); diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c index 411bb2d1acd4..455df0c0deb5 100644 --- a/io_uring/io-wq.c +++ b/io_uring/io-wq.c @@ -739,6 +739,10 @@ static inline bool io_should_retry_thread(long err) } } =20 +static struct kernel_clone_fns io_wqe_clone_fns =3D { + .thread_fn =3D io_wqe_worker, +}; + static void create_worker_cont(struct callback_head *cb) { struct io_worker *worker; @@ -748,7 +752,7 @@ static void create_worker_cont(struct callback_head *cb) worker =3D container_of(cb, struct io_worker, create_work); clear_bit_unlock(0, &worker->create_state); wqe =3D worker->wqe; - tsk =3D create_io_thread(io_wqe_worker, worker, wqe->node); + tsk =3D create_io_thread(&io_wqe_clone_fns, worker, wqe->node); if (!IS_ERR(tsk)) { io_init_new_worker(wqe, worker, tsk); io_worker_release(worker); @@ -817,7 +821,7 @@ static bool create_io_worker(struct io_wq *wq, struct i= o_wqe *wqe, int index) if (index =3D=3D IO_WQ_ACCT_BOUND) worker->flags |=3D IO_WORKER_F_BOUND; =20 - tsk =3D create_io_thread(io_wqe_worker, worker, wqe->node); + tsk =3D create_io_thread(&io_wqe_clone_fns, worker, wqe->node); if (!IS_ERR(tsk)) { io_init_new_worker(wqe, worker, tsk); } else if (!io_should_retry_thread(PTR_ERR(tsk))) { diff --git a/io_uring/sqpoll.c b/io_uring/sqpoll.c index 559652380672..8d60b9775798 100644 --- a/io_uring/sqpoll.c +++ b/io_uring/sqpoll.c @@ -312,6 +312,10 @@ static int io_sq_thread(void *data) do_exit(0); } =20 +static struct kernel_clone_fns io_sq_clone_fns =3D { + .thread_fn =3D io_sq_thread, +}; + int io_sqpoll_wait_sq(struct io_ring_ctx *ctx) { DEFINE_WAIT(wait); @@ -395,7 +399,7 @@ __cold int io_sq_offload_create(struct io_ring_ctx *ctx, =20 sqd->task_pid =3D current->pid; sqd->task_tgid =3D current->tgid; - tsk =3D create_io_thread(io_sq_thread, sqd, NUMA_NO_NODE); + tsk =3D create_io_thread(&io_sq_clone_fns, sqd, NUMA_NO_NODE); if (IS_ERR(tsk)) { ret =3D PTR_ERR(tsk); goto err_sqpoll; diff --git a/kernel/fork.c b/kernel/fork.c index 9f7fe3541897..f308a5ae0ed3 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2590,9 +2590,12 @@ static int idle_dummy(void *dummy) struct task_struct * __init fork_idle(int cpu) { struct task_struct *task; + struct kernel_clone_fns fns =3D { + .thread_fn =3D &idle_dummy, + }; struct kernel_clone_args args =3D { .flags =3D CLONE_VM, - .fn =3D &idle_dummy, + .fns =3D &fns, .fn_arg =3D NULL, .kthread =3D 1, .idle =3D 1, @@ -2613,7 +2616,8 @@ struct task_struct * __init fork_idle(int cpu) * The returned task is inactive, and the caller must fire it up through * wake_up_new_task(p). All signals are blocked in the created task. */ -struct task_struct *create_io_thread(int (*fn)(void *), void *arg, int nod= e) +struct task_struct *create_io_thread(struct kernel_clone_fns *fns, void *f= n_arg, + int node) { unsigned long flags =3D CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD| CLONE_IO; @@ -2621,8 +2625,8 @@ struct task_struct *create_io_thread(int (*fn)(void *= ), void *arg, int node) .flags =3D ((lower_32_bits(flags) | CLONE_VM | CLONE_UNTRACED) & ~CSIGNAL), .exit_signal =3D (lower_32_bits(flags) & CSIGNAL), - .fn =3D fn, - .fn_arg =3D arg, + .fns =3D fns, + .fn_arg =3D fn_arg, .io_thread =3D 1, }; =20 @@ -2727,14 +2731,15 @@ pid_t kernel_clone(struct kernel_clone_args *args) /* * Create a kernel thread. */ -pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags) +pid_t kernel_thread(struct kernel_clone_fns *fns, void *fn_arg, + unsigned long flags) { struct kernel_clone_args args =3D { .flags =3D ((lower_32_bits(flags) | CLONE_VM | CLONE_UNTRACED) & ~CSIGNAL), .exit_signal =3D (lower_32_bits(flags) & CSIGNAL), - .fn =3D fn, - .fn_arg =3D arg, + .fns =3D fns, + .fn_arg =3D fn_arg, .kthread =3D 1, }; =20 @@ -2746,11 +2751,14 @@ pid_t kernel_thread(int (*fn)(void *), void *arg, u= nsigned long flags) */ pid_t user_mode_thread(int (*fn)(void *), void *arg, unsigned long flags) { + struct kernel_clone_fns clone_fns =3D { + .thread_fn =3D fn, + }; struct kernel_clone_args args =3D { .flags =3D ((lower_32_bits(flags) | CLONE_VM | CLONE_UNTRACED) & ~CSIGNAL), .exit_signal =3D (lower_32_bits(flags) & CSIGNAL), - .fn =3D fn, + .fns =3D &clone_fns, .fn_arg =3D arg, }; =20 diff --git a/kernel/kthread.c b/kernel/kthread.c index f97fd01a2932..5e7c8f3f184f 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -388,6 +388,10 @@ int tsk_fork_get_node(struct task_struct *tsk) return NUMA_NO_NODE; } =20 +static struct kernel_clone_fns thread_clone_fns =3D { + .thread_fn =3D kthread, +}; + static void create_kthread(struct kthread_create_info *create) { int pid; @@ -396,7 +400,8 @@ static void create_kthread(struct kthread_create_info *= create) current->pref_node_fork =3D create->node; #endif /* We want our own signal handler (we take no signals by default). */ - pid =3D kernel_thread(kthread, create, CLONE_FS | CLONE_FILES | SIGCHLD); + pid =3D kernel_thread(&thread_clone_fns, create, + CLONE_FS | CLONE_FILES | SIGCHLD); if (pid < 0) { /* Release the structure when caller killed by a fatal signal. */ struct completion *done =3D xchg(&create->done, NULL); --=20 2.25.1 From nobody Fri Sep 12 07:03:35 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4C08C05027 for ; Mon, 13 Feb 2023 01:00:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229598AbjBMBAt (ORCPT ); Sun, 12 Feb 2023 20:00:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229631AbjBMBAm (ORCPT ); Sun, 12 Feb 2023 20:00:42 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C014F93C7 for ; Sun, 12 Feb 2023 17:00:41 -0800 (PST) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31CNUFbP028251; Mon, 13 Feb 2023 01:00:32 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-2022-7-12; bh=47YODoZvQySuPVZTRCtA5w2nC9XLO0G3an+/1je2NsU=; b=J0MrJU6+TNXK9aiFzvLdOqbNwXmIayAOrjTTN5WYknxPVN1hdmNPte/iQv4KZ1FW2CVD gyWHUCjv1Rp+oDYrhqAAnW5mRRVGjsy8IF9Kl+sjxTOAXaeS5vZ6RJjKDVee9cy23Hd1 suQoEXw4oDlv2MuTrJLo3hvKBD6NA3vph3OYPGko5yr0XgH0QouV/b3TLMnoK2RlJTGT JSO/yB+CRmTl+i7AL57veqBenod/ttZsY7SM7zVUiYut9nIYESeHIcfwas/VR8QBW1Z3 +284M7XS2Au1E32PwgRcXpjl01MiqITtpCaOM0/dUEJxmqdc1nLYQYw11UBCIxDblKWb TQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3np2w9sq0u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:32 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31CKxTxp032648; Mon, 13 Feb 2023 01:00:32 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f3fsec-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YxqmnwmO/67dntMgVHaNAZXVDIS/oBeMOy0/Y5Pk2Fb3aGnGaz386CBVLV6OWhcj14lJA14Wy9Gq2ulXztptnk9iaPlafmgHzSCltDNBybEaogGtY5nObQDLRcoNZ0ZQSYTkn6zju9bXHoNuvf+tKqdm7TQ84YP/lEkrziiK1zWFBvVP26+5bM3AYFRdGomCE5rmtQfT29j5doavNMEawwCq2K3SvenmmlPWPh5qWwMTuBduh+v6DYtQL/gSjGhni0Q++CLpLn7+ALGKSsjU4neAXEFf4PrU3qes/PMxeddtz/zTHgv1F4c9mSy49ovhuaUAAr7p+YiwA/jQhwnErg== 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=47YODoZvQySuPVZTRCtA5w2nC9XLO0G3an+/1je2NsU=; b=US2j+FJWOFp6rpU+r1lxL1LlHdgSKLojhSN2drl9Bl6jzsEqgU8xGS3p76yGf5lC3Twvz/1bHepcQ7LYo3LI5KuFFeB2/GZwW5/m9CntP+KXAAaEI3iQAj5t79gN2bSbAyYxoYLFYECr3/R8Ev6FR91fn5yAByP+zKgNEHk5l9yB95a63O/+B1+tcCt9MXSEFuhXKOMf1UyaK958bHyQ3CYLbbwnf/SWKLWdItIWBhHALy9ptDDnQPetEOLN8RRo++7/Rei63A/a0jvzjzHBrWnv5TlBiz+shm9qHtLkeqppSveiWyQWCapP06h/Tn3Uir6D9axqV2Ur0R68MYKXQA== 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=47YODoZvQySuPVZTRCtA5w2nC9XLO0G3an+/1je2NsU=; b=jJaeFYFgCV1gGNEFoaA6d/cD/XahiZjTJG/uWgBOSSA5KJGHHdY9rc9Yf7r2GSixqFdgjZXfPWFFWhksChtimR44A/NTzuI2u9AgkMK7n1+v/xW4V14SKijwaFfCvwj5KflvX48KdmfCt19Y+M+6i8b9FM5HulGQwvXFIAki8mY= Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by CH0PR10MB4921.namprd10.prod.outlook.com (2603:10b6:610:c2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.10; Mon, 13 Feb 2023 01:00:30 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f%5]) with mapi id 15.20.6111.009; Mon, 13 Feb 2023 01:00:30 +0000 From: Mike Christie To: brauner@kernel.org, ebiederm@xmission.com, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org Cc: Mike Christie Subject: [PATCH 2/5] kernel: Add kernel_clone_fns function to setup task Date: Sun, 12 Feb 2023 19:00:17 -0600 Message-Id: <20230213010020.1813-3-michael.christie@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230213010020.1813-1-michael.christie@oracle.com> References: <20230213010020.1813-1-michael.christie@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR05CA0013.namprd05.prod.outlook.com (2603:10b6:208:91::23) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR10MB1466:EE_|CH0PR10MB4921:EE_ X-MS-Office365-Filtering-Correlation-Id: 281049a7-e8bf-4448-010e-08db0d5db3a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YnJgyqGyagurapRuxU5S6C7pALFr4Inara+KJ5b+8tQXA//7h0cBwUieqT5INBl9DFp7KOUEoiiqQtvrcoAClHSaZRoJtMRal9k06WTRvtEZNzFhmrmcE4pgeUryda4NutIcu2S/Mx8R5aERUxWpb9+pqvEpjZfn75wNQ8AexbqWd/GxQO3SJtN0MOUVjbpFEa+xKiY7TDjX1wRF2S4rbVE4tHfA2FwI2rTxKW8zOqnZM+MSwq9kFpaxynYU52ZLOGzK9GJoextzwpmeGUsyKNTRbzPnY8yIs8R1+911VA+pw4pHybT/2jEdfOKaO5nxTYss679dIXTJkUfqczq7iiAYbEHRJOtdBKBErrWB5k1F2cA87k/yR+VKUDtbXJuqD2MDuCwBXltXWDYJVM2PFq8NDdi3PpKr+IvJh8wCSNZkoVge722mEKpMvSiJQbjpRFSVipD7JCsMjNO7/U77ARPwc0gnqj8q+uBM7kUGfeJEtMmV3+wnmQ0eWcy36/hVv/gIGWRp2miRJZXQl2qIk15nI7ODjKQfB7AoQp0jpJHDxNfdnuZ5GqVtqkbLZfD1HKhQc+EZhboyUagHwFsPZ6wQ2M7EpZ1CkMLle66zkYt+2837EfFpr9RkaiDl4sn3XkzGi0bIrSrplDlN3o4Kyw== 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:(13230025)(366004)(396003)(136003)(346002)(376002)(39860400002)(451199018)(8936002)(36756003)(2906002)(5660300002)(86362001)(2616005)(83380400001)(4326008)(316002)(107886003)(38100700002)(66556008)(66946007)(66476007)(8676002)(41300700001)(6486002)(478600001)(6666004)(1076003)(186003)(26005)(6506007)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZwNy4fMM9t5oIK/GekgnkV+JHW4IlU7wvp1ZWXvDwWkMCJfLIX9eCiST5PFV?= =?us-ascii?Q?KmmK05Os2bYGSmRnnxS9tjmguRd1GzMrLhLr8nU55rmn7PtlRPXYeVQQxwIc?= =?us-ascii?Q?/8vvdHuUag8E2PjPPVRH7cstsIX5EjyhipgMnCaHZuZEOLgYY26xn2I59FPZ?= =?us-ascii?Q?C0O+bZL9abFPQFLJ/6L2Y6W1NFZapb5ZJ0gOv8HCEWSeX2qL+s1mVXgGkE8P?= =?us-ascii?Q?zxgpphv9a1bo+vfYgomAVx1YyqZGQ64uw25BPTli0J363ufrrckEpu6Bwmu8?= =?us-ascii?Q?9EAO0h8NliUbv3tcHGSAC6U5HFWkg9R4KUloERITTZgCK18D7/2q/gU5CtsS?= =?us-ascii?Q?pLPBQZyG9Av7jaCRchC3jV8kLvIAWTvmtTOvwYDldXJKGVI3zU3dgA+78nKR?= =?us-ascii?Q?H1q8Tij44IbKy6xka+7O05Wxzmwalxx6lGiybesE/HMhWTa4U2Kp0SsYlTYI?= =?us-ascii?Q?Y9E7hKHijC2L4QQJmG/V7NsOM0ih/FyVDCxcidEymGwKsxWzx2kYVGkIT/Ib?= =?us-ascii?Q?PZCFvLwMltid/4ctcCnfHLDUq/35QgoEqdf9rR7zgYr86PHP78mZwTKn18fM?= =?us-ascii?Q?YltPEIDOb6MQvSFy0rYCKpSrnMqlaUGg44+UcpWaNqbqydW9CFemjZ+kB0g7?= =?us-ascii?Q?oC77rc4YyPdciz3Z/V0hFV1mKNjdMhS7ZRUU1rmvRe+TJrZlEWXCvX+zpJQE?= =?us-ascii?Q?yYQUe33BrqSLBNuqquXtnd2l1kEe4jYsjFWdZoaUJ9GW6y4WPJtnpOz89htd?= =?us-ascii?Q?l5LbEsgoAdWdEg+MKScRbv0bC4fFHMAycJrkDysuk3ZsNWVpvkF1B6/lJ/Wq?= =?us-ascii?Q?REuQgCEhku7lgS+KiP2AfPpsc4QxJ7XiZHUnU0aGpiPjS4nT5kYi6N0ptUjE?= =?us-ascii?Q?2nFD/4vZ8haT4nhthkA1aDICcG8FmnogcFe3/fMZZGTANxxJ9yzswSpZ7Ckv?= =?us-ascii?Q?Af+j9uKiB+mtQs1Gu/MGZiBdxRV9ZcuWXlLTSp5y/m1R+W70lL8oThl6wOvM?= =?us-ascii?Q?i0ZjUvosNh3fILDfdIhEd+iuLxk+MF6hAfZ7MJVuaYKfYt/JUf1cmyGJ7gbZ?= =?us-ascii?Q?PujYvSH0QPN4dXBtEjzqkm+hWhra1HJV0qCbkuUGRBmBE4nQj9SEtfSJgne0?= =?us-ascii?Q?cmQH8aeyEIzo21v+fE+a3tzt8pYxk1mzBd+G8xA65FYKR45sUnYE1V+hghuj?= =?us-ascii?Q?/7aT++DchFDkkKdgbA6G32+Xeimzdd+DDkE27mnBMNyw4bNJCkP+btoBNRXT?= =?us-ascii?Q?7Yl0Mm6s2pej3phqcG/BucVZjwyTXebJ3CvteVxM/QdmG38/0xDV8yUSufTL?= =?us-ascii?Q?7e19JCGsGTJCBmqZ8149yYASCwenZ08I9SNg/oU4iK9fRMmMlRVlhhk6QQ/Z?= =?us-ascii?Q?+J1DSt6T+UIR/cEsL1HW5gbKxh31DJbMxjpbidiCXqa/t+dEWJK/raBSEUQ1?= =?us-ascii?Q?BPkuk/OGBp3mrQmePDVzktOwofCnJMkjln0DwLW9nZIquEMkbkByA+IODDAJ?= =?us-ascii?Q?66ZmjWYNFY8S4RT8BSOf4kra4E/JHgvgLi50UrhY0aA2BWbaPVK7FlumGUwN?= =?us-ascii?Q?2fIdAS4pgdU/xLU87sNWxJVy4xr85H6FzZKmk9Z17h9VujO4dfFYK+6mcwUT?= =?us-ascii?Q?Yw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: G7kGqkt6FfwU/KFO7Xp/nJVRwtvFhbQCWFImtGWlMMEkPC2pQWbhRPEK6b7DEZ2J6G8x3MXb5nwKWO1UMLgszNzUDGvlkAkd8+xUxTe+GPVoBALYYnLIc1/Zxjxo0XCruwO0OgcyibT99RNyzkGqmAft9xBs+DzDZZUYEct0VL1Wtd0ZehQiHT23tWbOl5uIb+4c3bNzxfN07sQ2m8lGPN9EKt0VTnzffaqyYsa53Q+KHuQq0rRBWG1NOPIDcbGV8USW+u3MWs851VrMTb2d3woQuHqx4eECa/iLyMQZi4Z57OFRtpaH/Lh+nz1bNvepIYdJYCPFdQ1rGvl6r0MCxpRs62YzF2KQIz63wmbmr33m2WCRBEphepYNS1HztyRt+ijmQBe9TpeKysnmEzkmQ+/nV50x3cy7LsC/Sj/BsVBkjW+Wg32dTvIlOIOi1bNFQjgR6GJXfyFL3yTYPyC5H7BK60vfoLjhKEfPCa6FB/GnYB2/weCbTs2XTeaBjbrhZt7e0qrI2hIz8sVJ5ta/kn5j6WFxRJRr4dq0x6eJWvwiEIZfyt3fstHieCV1eSFfPqtXrjOaV/ZwfxOn+6pS16mVUuvis6sFmKC1RVdfNvA5C62tmqO8r8Vkg9o+txAppj5uaYQmRPafB4PJOKAOI7iCfBScK4Ek5gfSGuJcdLNaEuM9PA0xF02GBCO20H3W4tOrp3yEYNrMYvgx34aFqPZTC3/uJSWYy7DpCKvYGPvBQRMdI7UxcFnsMYM1DHxY9hRF1wmOftgu0Hiy5zdqwxLSOjn7aCu1qCfU52OerPloPRJOA26t+JbRpz7S22Vp/05kK2xrjyT0whhxPtzOlp0Ix1eBHzeuG5m1l/gB9B+Z0kNrbcM3uz/9z1tQgqQY X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 281049a7-e8bf-4448-010e-08db0d5db3a1 X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 01:00:30.1568 (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: Ay9orpkkp+xmLlmc6wMH0SZqSC3H33sXbrp+OqO3D48506ZyAGWOxiqr9eUQ+clrHz+a4ZrqPOX6nTgdc30Gtihb97QrDDh2qbpNoxXJErw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4921 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-12_12,2023-02-09_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302130007 X-Proofpoint-GUID: id0zx41dyX_xwUSnC9r6hMiCmxj1NhWz X-Proofpoint-ORIG-GUID: id0zx41dyX_xwUSnC9r6hMiCmxj1NhWz Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The io_uring code will set it's worker threads's name with a iou-sqd/iou-wrk prefix and then either the task's pid or the task's parent's pid. The kthread code will set the name to whatever the caller decides. To set these names they have come up with different approaches. This patch adds a callout to setup a kthread or io_uring worker's internal struct and/or set the task's coomm. Signed-off-by: Mike Christie --- include/linux/sched.h | 2 ++ include/linux/sched/task.h | 1 + kernel/fork.c | 6 ++++++ 3 files changed, 9 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index 853d08f7562b..09bdc71c0523 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1066,6 +1066,8 @@ struct task_struct { * executable name, excluding path. * * - normally initialized setup_new_exec() + * - can be initialized in copy_process if + * kernel_clone_args.fns.setup_thread_fn() is set. * - access it with [gs]et_task_comm() * - lock it with task_lock() */ diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index 7a61ebbcdfe0..844824e0023c 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -20,6 +20,7 @@ struct css_set; =20 struct kernel_clone_fns { int (*thread_fn)(void *fn_arg); + int (*setup_thread_fn)(struct task_struct *tsk, void *fn_arg); }; =20 struct kernel_clone_args { diff --git a/kernel/fork.c b/kernel/fork.c index f308a5ae0ed3..057274da64fb 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2345,6 +2345,12 @@ static __latent_entropy struct task_struct *copy_pro= cess( p->tgid =3D p->pid; } =20 + if (args->fns && args->fns->setup_thread_fn) { + retval =3D args->fns->setup_thread_fn(p, args->fn_arg); + if (retval) + goto bad_fork_put_pidfd; + } + p->nr_dirtied =3D 0; p->nr_dirtied_pause =3D 128 >> (PAGE_SHIFT - 10); p->dirty_paused_when =3D 0; --=20 2.25.1 From nobody Fri Sep 12 07:03:35 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F18CC636D7 for ; Mon, 13 Feb 2023 01:00:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229656AbjBMBAp (ORCPT ); Sun, 12 Feb 2023 20:00:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229476AbjBMBAl (ORCPT ); Sun, 12 Feb 2023 20:00:41 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E08ABF76C for ; Sun, 12 Feb 2023 17:00:39 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31CNK9fg022004; Mon, 13 Feb 2023 01:00:36 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-2022-7-12; bh=/Tpxre+PTrq6dVqMOHpZmvVszziOwhc3Sn/xMmECV3g=; b=KY/TcqgDFf8nl+0jWLr9bYzI1v7Vvr4PtcjHBDhXy4iGRTQT8Czgu4RXrIDWsoqT3vN8 k4q9cGdiOJJKW8xEPLnlgxGnz24rqrO4jFwpMoVMVJH2QpGkLYQQrsb3BWVJJEGYjZ8J uglFzbPmJKc+kGfLU0JtuGtZ/gn3LOelhQYIwyMLvfdoFoiqzjF/LcKNeQHwACwimcX/ Y98eDGUAMvyD+pMqvOdJO5ecmhFJsuHi3eC5eGULdpeRxjuWU4GeVTcLWkuWJZNCvowH OmwTLjwlQasJU1/LCHABcFnxRXAwXqORtH0gmeN6uFLL5AdDQiceJ4NLHal4Vc17fCpI FQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3np1t39pjw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:36 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31CML1rn028861; Mon, 13 Feb 2023 01:00:35 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f374rc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CSsYN+WjE6yE2MGkUZcuY4VEEXGxXQECO/PdlgOw74bUZicWl7ZwQaa5vBcUf05HZ2Y8l1HqbUHMOK889RtP+dvO6AJPshYTHaWJTIkoklP0xdyAYLbAhHC4jISrXOCs3ebyi2EY904FSAdOK2YruSamFJuHLSx97/xd0qO3FdRGpu3cAjql6cY38mOISUc5H9xLv81zhObndqqTRhaNIUaN+V9t+U6ayJUclIfxMDzBXdQd2bvy2DzL72Bj5rlBFGg0QVekondy5Ua7RbMoFf8G0Rt4VQA2fUrLsqdZJioa75WxaOGzBL7uCV/b+WInEwhM56t8y6Z1KePpxh7DcQ== 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=/Tpxre+PTrq6dVqMOHpZmvVszziOwhc3Sn/xMmECV3g=; b=SR81/20YNG1jYlEYeuzzYkE4k5LxCFvcM3+qqwkdPX0nj78RruiYbSp/u8/sES5kP6QLgbqktwSSMxjzoeWtZYNwo7Nx5FSK2nIJL/biCxEvvcMbNbRjlkwLy1D/ex2J/ozb0HZA2dnX2meob4w23gMJ2uhCGsB7+tNdTanghV2oxdULw2Wo115ArGGMOV4I+YRdIVAnPKs6ioFUMJWiO5AonnzhtLjr0wDgM+5uVtoUjytKHT7FruU8wPq8Xs/CZPMqFA7BBIckqNOjrlqJXI6y8qEF+LVZWfg3dLPhNWGKrVANy5p2WgHG5GWrjsFGJqn3vKjqce8PYJTkSSqSvQ== 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=/Tpxre+PTrq6dVqMOHpZmvVszziOwhc3Sn/xMmECV3g=; b=tiWAq6SsUvH4OyHHpii2mlaDlpAzGeOpM/LQuYTmNAjB3rrc4pkX40LX9WKz7aAHPLOxv4twycGZwZ4Gbugk8ewfF07yDOTgLxjLaLgLmxmA05Uqs+V95vB3P44Y2eIKmi7bxA1VBZ35HWi62AZNzLM7uCfsDcAY1DbmU7V38gE= Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by CH0PR10MB4921.namprd10.prod.outlook.com (2603:10b6:610:c2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.10; Mon, 13 Feb 2023 01:00:33 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f%5]) with mapi id 15.20.6111.009; Mon, 13 Feb 2023 01:00:33 +0000 From: Mike Christie To: brauner@kernel.org, ebiederm@xmission.com, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org Cc: Mike Christie Subject: [PATCH 3/5] io_uring: Convert to use setup_thread_fn callout Date: Sun, 12 Feb 2023 19:00:18 -0600 Message-Id: <20230213010020.1813-4-michael.christie@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230213010020.1813-1-michael.christie@oracle.com> References: <20230213010020.1813-1-michael.christie@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SA9PR13CA0107.namprd13.prod.outlook.com (2603:10b6:806:24::22) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR10MB1466:EE_|CH0PR10MB4921:EE_ X-MS-Office365-Filtering-Correlation-Id: 8ad58e4d-fb23-40f1-7d71-08db0d5db58e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: n7cWLMeF7aoguAK1AtFbjLWieGaUXhBF6faE1BlGEuyECZTjlurdOntxPviH0D8eOyeDVq8cBrBYGsDCS7Zbz+e/MqTso72be3r6BNLGVWJ22JJXk9rMkWjP52sH/fFqwyErYQmXf7MEMX3jJhD8TQZv0iWe3K4vc/G+yOsjtWPmUHHW8nqJWqpKIrsxcoxLKDf9g/KFVKeDIBZtWsbDCT/4bjjEqg1Um2KCVYQUgI3GExo2NZU3zT0Wf1/mRcfmNW0fjVejwL1I2XcI8ptoUB5yn5DSTDAksyuP/UhT4PixFQ4oAD+9aRWx+4gGVS6EO2svmgszXKPhECX0EGQpN/j+p1F8NQvC8ChKXZhomjIMldzVvKY0+TfyNLevCvRKDlb4XPMElwMUmKE1AMZ2ez+LbqViUEaKNvrITjNBo73gifmzk942UlO0t2sddRH1N8vd8J4pGBNcjH9m6qDS0VRphJcd3WZebkCVEv5HVu4e+//zu3v4TXyf+wH5bGNRfXuUpqPEWNBvArtmpNncRO+sSss6sHJnfqBSTL1CfFZFsMuOj+JL95ZrKtX3JBojhegO/BY6BYdICZFeCQv7iPXsrC31bk5MBlP1jF7k2fAZrBa/7iJ3nWMVaHh+8CPjxcjMNCGGJ1yRgM+a1nkTEQ== 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:(13230025)(366004)(396003)(136003)(346002)(376002)(39860400002)(451199018)(8936002)(36756003)(2906002)(5660300002)(86362001)(2616005)(83380400001)(4326008)(316002)(107886003)(38100700002)(66556008)(66946007)(66476007)(8676002)(41300700001)(6486002)(478600001)(6666004)(1076003)(186003)(26005)(6506007)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oRdayw9nelWJdnw8gPSSATlqgyVtC9J1exRbgUt1wP3r1RWlvl4I3fxb64c8?= =?us-ascii?Q?Oq0XnOFyMoah1VEru744OSYTJ7T+McWf5Dh3lF0ePQVi573130wlqCyswA2n?= =?us-ascii?Q?2l74KDEzGzTeRSSoGzvdZbwtCvOabCqr1uOIKTDGGlpN1bLNF5oLfjykXIm4?= =?us-ascii?Q?JwI73Q3j9gib5BHxi19VpHtHqTfrahOWpBr0R8h8NKZodxDIkMimXLoHmPeG?= =?us-ascii?Q?VU5GVZfjIzym9+QM1r0ViNPfQyqEoIKlcJtyI/Wm+5M522CCce2lqoYm19vH?= =?us-ascii?Q?I18TttWcmcj4UE78XvlLgJL2NtDNTXZJCmB2AWvsFwWl1wuPx8Csk+Q754Ot?= =?us-ascii?Q?lduslAef/Q/0YdMQtDM7CCbDi6ycVNJtiQq7HZ4MpS4E8wd95bWBlO3nDhdM?= =?us-ascii?Q?AFzyJ9KMYI01z/R6Z2qz+YiMqJb/UyNs7yOS9u12KXw9R8N0G0HQ1LOMpN4h?= =?us-ascii?Q?f8+es9TTyhkArtTabHi0aHGfz4cLACvw+ikB1z+IWYJuNqNVZgXz6sJ/Ae94?= =?us-ascii?Q?lgwdDjPYKhcpzYmOmkR6U6O9nZpg7WN/oyRCsmOmZZj6nr+bf3/umnsJUbV7?= =?us-ascii?Q?9KUyfkBt3zIggu5ULq3u/a10jdgSsqk3pKNbHlRW6G2Ps867XrEWFTfKSfAS?= =?us-ascii?Q?LLyNFASa3yfWVWSJPBdc6jC5lzaqo0M+I4g+JsTzS3w/a8tVwAfJ7IT/hjG4?= =?us-ascii?Q?iVqNvw5eNX/TLMV+VNx/JzHuN9qYwNJ7koGfjboXVkqiC0D5f0GWwZiq53wB?= =?us-ascii?Q?cn2NZkhLkJVoM8r81TTbUa4eb6rp7b7zlHi21f4ew71Qk7NDLU4kmYjAu4TP?= =?us-ascii?Q?g3v2UJy08lnFec0iFAFF7gG/LHRemEV9Qek8zITkAAZuuuE+DSff8L2TDiO4?= =?us-ascii?Q?YoJptvOpC2E7vIVv99Vfnk8zhj7LwM6UeSSYhcX66yENEHv7PmJswAkyEcgW?= =?us-ascii?Q?dbm5NBHo21PwFUbNPSMhxA+vexgWlKrJcBm+bucGbBOhjMH5r67LcNLnyJfj?= =?us-ascii?Q?1f4iTTS7vjM5Ze/ahcFaSI7ZSl8+qVk4bc4Qdfi9VIavcnwjqde/Bm06PLtH?= =?us-ascii?Q?PLdm18zh/3PgQ08V3+L6TipQAbnG4SKmjPe/i6Q42NNdZGclbCqr1ij+dgJc?= =?us-ascii?Q?KmXvtzESgwuEVFjmkUf1m00b2QeodGZ6iSuJCQLntjpC0QSqtu8wK9E+rAjL?= =?us-ascii?Q?5IggcgAy5vzO+1q1SHlcmVApbBdmkaI9PPRRzZTos86VFze8DMyVqf7mZq+j?= =?us-ascii?Q?zvvbaLCmZzeE6tg3Eympmjw9YbcqUTfuKll9sx2RDrhJOF2RXN+nywzbinWe?= =?us-ascii?Q?4jAiHZlrVbXpaVcZDAcy/1yjhM4zBhcnK8qeXF0/6ZXxmTKgUvvVT/NgkpVm?= =?us-ascii?Q?rPMKQYTSgf9Zao4i1k3Hj+HVDieif0l2Jc7PQqkwBFrP1YxIuQ26CnNtfqgS?= =?us-ascii?Q?Sr26jrLbQJsK71jjteod1dAyx3iCnVIxzsb4ltQC/aVoT1lfKcU8nnMlmQ4E?= =?us-ascii?Q?Q/tPmWwq4Gd47VbMeqzFntiat1BNjkoSzkx/vVawAx0dp/5NVUNn9Mo4hnoW?= =?us-ascii?Q?nyKKvIVmRG0TOX0Svsri7b/3RQNYsejcl4lks9yMnZV8qMwZm9K6+np3AonN?= =?us-ascii?Q?5w=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 9zLUP5YlpUPq+fiLRuQAODeMZM7dcBVB5Q9pGG8G8X7jtz7tG5L5/pH9D4NdFIoMcWVeYwuitqUr0je24hs8gh4P1058jdVWa3GdxO54aJtpeH5ycqReHkiglaHIwKbu070GEVNOd3IK0YCpdlTtLnxFMV2ztFHFdfoJ5hd2EHJnbaQYrz4WWv3DdXH9qWSHQ08xVB+u4gkgOrdXv3P8IdYOcsZ6NfmjBmdP4WrsSwCtSXVvpfpWUtgiQAVpzsaqcY/hTipnGdR8G3sLjj3+FveeBgzJCTc9GZD88aEkRCHFg7q3wNSh7mzoSqi0J2Xih0Mye647IZJPSbJd0KvEVIy6hkluaB4ko05Qywdv1jp0Sv8Mpy0xIW2v46GlKKs5DgeEO9cbA/Mdnp9uGniLTJJ1ut1wl1ONcm0OYMcFRX5zPMQ1WySllRvBZaHtV9aXRCSyUTZL+A6OsWfGRg0YNW4+wC9py3E1MdrcYq0i3kMFHo3N0tFiFwDBJ4+7B5MSIMLaBcfFusHDhGiSFwXtH2x5eSWYNgwt2JG8zUDiBq/D2YVocwlgth8YsakkcYWbnQ+IAooduw24ApFtEUe4vaF4HeBJarUxha1Q5++UOPcwIi/c3G4FVzzswjPQIXmaNIKyDT06332arhy7B1P7KLRBegFzkxpIowrSSBd21u8K3nTZvl8/JiBrhuqlp+1S1CMhblwgPUleMw0c8NFTvUFSHIkOzeiQlrJqh/0RfOiXx2prgfSv+dEG4Bb9ElRGBsV4m406Kicxjqn1erlZQueGwwvketx8rDi8zVrAaWhK7ltVXJzdb1SFsBn1e1fB1Ea9QtzMC12HLkcihssI7DF4MP7uBcD2gb8owU0QlZydWOnd8ijB+vyBDZi+iYjA X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ad58e4d-fb23-40f1-7d71-08db0d5db58e X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 01:00:33.4222 (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: cuZB7SzMb4+srIpoPK5HJoFaL0BT/gKeXYhd4HPXZEAX1dqnyEcoULW/AYHdRHeyKlZ+6dzUvl5I5It3uz/8NYLQ+QjqU/qW7ZerStf0mAw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4921 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-12_12,2023-02-09_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 phishscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302130007 X-Proofpoint-GUID: dK3k9qoANbA3NVhSlHf5BtciUWtzrcAr X-Proofpoint-ORIG-GUID: dK3k9qoANbA3NVhSlHf5BtciUWtzrcAr Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This converts io_uring to use the setup_thread_fn callout so it can set the task's name during copy_process. It then doesn't need the temp buffer and will work like kthread and vhost. Signed-off-by: Mike Christie --- io_uring/io-wq.c | 11 +++++++---- io_uring/sqpoll.c | 13 +++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/io_uring/io-wq.c b/io_uring/io-wq.c index 455df0c0deb5..4981bfd5581f 100644 --- a/io_uring/io-wq.c +++ b/io_uring/io-wq.c @@ -617,13 +617,9 @@ static int io_wqe_worker(void *data) struct io_wqe *wqe =3D worker->wqe; struct io_wq *wq =3D wqe->wq; bool last_timeout =3D false; - char buf[TASK_COMM_LEN]; =20 worker->flags |=3D (IO_WORKER_F_UP | IO_WORKER_F_RUNNING); =20 - snprintf(buf, sizeof(buf), "iou-wrk-%d", wq->task->pid); - set_task_comm(current, buf); - while (!test_bit(IO_WQ_BIT_EXIT, &wq->state)) { long ret; =20 @@ -739,8 +735,15 @@ static inline bool io_should_retry_thread(long err) } } =20 +static int io_wqe_setup_thread(struct task_struct *tsk, void *data) +{ + snprintf(tsk->comm, TASK_COMM_LEN, "iou-wrk-%d", tsk->pid); + return 0; +} + static struct kernel_clone_fns io_wqe_clone_fns =3D { .thread_fn =3D io_wqe_worker, + .setup_thread_fn =3D io_wqe_setup_thread, }; =20 static void create_worker_cont(struct callback_head *cb) diff --git a/io_uring/sqpoll.c b/io_uring/sqpoll.c index 8d60b9775798..373067a714dc 100644 --- a/io_uring/sqpoll.c +++ b/io_uring/sqpoll.c @@ -223,12 +223,8 @@ static int io_sq_thread(void *data) struct io_sq_data *sqd =3D data; struct io_ring_ctx *ctx; unsigned long timeout =3D 0; - char buf[TASK_COMM_LEN]; DEFINE_WAIT(wait); =20 - snprintf(buf, sizeof(buf), "iou-sqp-%d", sqd->task_pid); - set_task_comm(current, buf); - if (sqd->sq_cpu !=3D -1) set_cpus_allowed_ptr(current, cpumask_of(sqd->sq_cpu)); else @@ -312,8 +308,17 @@ static int io_sq_thread(void *data) do_exit(0); } =20 +static int io_sq_setup_thread(struct task_struct *tsk, void *data) +{ + struct io_sq_data *sqd =3D data; + + snprintf(tsk->comm, TASK_COMM_LEN, "iou-sqp-%d", sqd->task_pid); + return 0; +} + static struct kernel_clone_fns io_sq_clone_fns =3D { .thread_fn =3D io_sq_thread, + .setup_thread_fn =3D io_sq_setup_thread, }; =20 int io_sqpoll_wait_sq(struct io_ring_ctx *ctx) --=20 2.25.1 From nobody Fri Sep 12 07:03:35 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1403C05027 for ; Mon, 13 Feb 2023 01:00:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229738AbjBMBAx (ORCPT ); Sun, 12 Feb 2023 20:00:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34922 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229655AbjBMBAp (ORCPT ); Sun, 12 Feb 2023 20:00:45 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 02BEE93CF for ; Sun, 12 Feb 2023 17:00:43 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31CMOaov031940; Mon, 13 Feb 2023 01:00:39 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-2022-7-12; bh=rJOQ1LaZH7f7QpviFzPATJXPfOIZ3hSpMzV3kYQ/XtI=; b=OvDE2pUehjbli7O2edajMs4a/gop5WxhT5Xl4bEVKCXB6hlbBVq4BgDofE804ejHDcH5 dF372+PcqbdSB/EdLSnV3AQz+DBrGmrOprTgwmrlBPs18AOsgI5u+XzyWcXd9uUbnCXh qMpZXuWWYk0AnoVCPFnb7e56rKK881UJe+2e6CxLt95AiPiGCBBAwx+cM1gHJH7U2wtd 4A6BV1CdMa71wHbCXaqRhQitqdm1P6jPPwV/Fq1ID0hfLPLGHpi7/JTBP82ziLOdNzzq SyXpzDmIloM753kBU+deHvZKshBp8eBHzCzVdk0MdW4tRfrqgfwRUTVAXAREIOI3RkHp vQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3np2mt9npv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:39 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31CKVBA1013539; Mon, 13 Feb 2023 01:00:38 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2046.outbound.protection.outlook.com [104.47.66.46]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f3gbd3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BUumJympmRm2CcnnsI6xf0rWAavbeGHDA/o7jmQL7d+nUEAM4/VbbF5P04xbJJbKysmXIsi9Piwqy55WaRD91LesRqPuya+Tp1v4YJHpaCvI5PdkJkMVe1KhJ28cVfbgiBVWH5saPe72YUcvnIZ+4AAOnvRINgaS6NCtS/rsEeyoUnohNjJOeekVK1HIvPPeO/tHvnuNUsq6Y9XbivPStzD23VCYiSmj0S3tKyjr8ZvhCFCdVWnF1hrTqatxbqTQ1YAv+1AQ0BLKt3tuiiF686WltOF9E4WXM5G6SqJt9hyX+OSbc59bzz1NK5DLFCqxZTbhqYBp5UHIbtURNKTRpg== 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=rJOQ1LaZH7f7QpviFzPATJXPfOIZ3hSpMzV3kYQ/XtI=; b=JxNRpZHKWukFA0XwiMwnTwesTpnweP8GdzgenJwRuSZezRCAxkii9feJgrkc3gd8OvxnNf+47cGxbL1sOudVqhjs2vzjQ0rLnt59sUm5njR/cHp6QJjO4SLpX/2h4cv1Kpa1FcGFVLo+cbi251OiZ/lBNqNkoPmc8s2m2WgRJPC4ejALhJ2m/bU6+ND5Pt8Ohg+htlEKI3pNgvDMEr/jQZtZl2Bc3tFzldRPNuQmu/HSi0VID7BFGifdbNbhxw8V/MiA9fR8xvmgKevkVmx7LUuBja6TVyI2Cn2a28uapFRQ1cZ5Dfpb8PBNV7jSK84SqztHGn3J+tyaFllNtrg4RA== 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=rJOQ1LaZH7f7QpviFzPATJXPfOIZ3hSpMzV3kYQ/XtI=; b=u7fVu7mOxd805TmH5RNVK8tLHDFE1ZCjVi2QB4lcfK9C91jIfbJMBFEyF9iRoDevBzpxQA8dzve6r1c/QOqkc9qSseNw9q1xt8POzc42KElbJHPgu1cQ8jdCvEwDGwun4hS9JJB/6CbACYuYfOHr4JNLUggAcx6GDBozaz0druI= Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by CH0PR10MB4921.namprd10.prod.outlook.com (2603:10b6:610:c2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.10; Mon, 13 Feb 2023 01:00:36 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f%5]) with mapi id 15.20.6111.009; Mon, 13 Feb 2023 01:00:36 +0000 From: Mike Christie To: brauner@kernel.org, ebiederm@xmission.com, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org Cc: Mike Christie Subject: [PATCH 4/5] kernel: Prepare set_kthread_struct to be used for setup_thread_fn Date: Sun, 12 Feb 2023 19:00:19 -0600 Message-Id: <20230213010020.1813-5-michael.christie@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230213010020.1813-1-michael.christie@oracle.com> References: <20230213010020.1813-1-michael.christie@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR15CA0028.namprd15.prod.outlook.com (2603:10b6:208:1b4::41) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR10MB1466:EE_|CH0PR10MB4921:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c209bb6-2c1f-4ab5-22d4-08db0d5db764 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Lwm6eH+hpWf3x5SHAxmfMH+eX3CiTNx5n+dv/EvrigyFtSQfCYEMRsb8H7aFNSq08UJZsmqVhGQyfiR0JXK+6vhb3A2fpUjGopU8Wv6Vn2TBDPwuR44bt2Z+VEIBA/RpvIrCMHljs7ZkFYxxDS1Hd/JoUgdpnp9y9KmzHhUIxIKS0uzYBkMva00P8UeDlU+4lslZ1P2DwmGHBKTKI8Mezb0mZlw0PZW1VmrWnyMy+5kNNN1YKzU0I0Tjc65u0XgwxDVEGmQA1x6J8Yxd/V0OPTNVI8ODFWdRJro/x0CqPwIkKVLRMisby++1g3NakmKiwL/VFWOvkShaPt5du2+3sP16zepQQOG8MLF+uErCKkc+Taq7QkEO31Xc5wwyQ+ogL+L1MZEjATukhWtTFGYoIlqVvVA2TfqlJwbqJLOrcIj9W55LE3fBKjhB1LyFR534I+ttVvb//NHE0CycvXeHo7U61SPeaZw2pc2bkxWGmvJtF8EabL4gy0sTIZQ4Fh6imeHdBsqPw1rs15Wfi08OsoQexPi3xgWmjViyUY4qdPdmPdodl/r7TbJLJhw/LNkCeH/5MDLzInK3F1LoDuv4Z/Ryt1TfbsYb2RHGgJyGuBNopRvMo7IehKcQ0npuxD023y9Jp9/eYb57Gc8/z6S22w== 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:(13230025)(366004)(396003)(136003)(346002)(376002)(39860400002)(451199018)(8936002)(36756003)(2906002)(5660300002)(86362001)(66899018)(2616005)(83380400001)(4326008)(316002)(107886003)(38100700002)(66556008)(66946007)(66476007)(8676002)(41300700001)(6486002)(478600001)(6666004)(1076003)(186003)(26005)(6506007)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tmKrEgwIpWsTyP3ysVtbXURta556JE5GITEZfQxa/Fn//qU33G9AR3zRZBCi?= =?us-ascii?Q?8Yu5L3TFsF42mDLFaVKkElBlrtrbvrxAlX36UwS0JuubLj0Uwn1W5y6fkEut?= =?us-ascii?Q?cCuUwFUjQhZ61MPvlXGbtX9YjT9zJhJlKp9gIqCUWHoDlMqy7EDyqjFr0jhL?= =?us-ascii?Q?EVoDnga5Lr1kwvpe9fdQ+1lE1zPTzqvUIOtlpL6jgvEO6MUzx/oj44c2agiF?= =?us-ascii?Q?kvFNVUc5tCxd/xzGtl34o5qDiLVMro7srfuivLBcu4zAeNNTfho9ltaWWPOV?= =?us-ascii?Q?7S9xD9mI3qtmEBlR8B+smDD2B99wbimJ9HzZVMzfV7RFYd8OP9o3dF/It2JO?= =?us-ascii?Q?ZX1RoZ4Ct6eeWwIGUcpqvgd6skCFUxzHyksWxSFujuRQbVSpXzs4lrlkbcA8?= =?us-ascii?Q?DW+0TetCmFskMWcpuPAoJGjUSkva/B+YHBDcSALQO/5UlpMyDw7UaMRwFVOX?= =?us-ascii?Q?bAuWFLredKvEKGrEqN8WbK7HK5AepIaTC5Ak7/9JVzOG83mWpsTlWizklqq8?= =?us-ascii?Q?lWtK3V5RhPIkOQXkT2AErz6f3HqjwwX2AFFBY0NSl+Js9DPh/hsZcO2a5Ft1?= =?us-ascii?Q?W69sBmILpkDQV0idvtMmZR0JPbQNkIZKVaT0H8bIh2NT26D15oY1IXmsjeeW?= =?us-ascii?Q?OXm39xzmVuZGd6+5fyq95Pmgb3VEPclGNyoOqVIyiKJaxHYJKxArA8MP+jVC?= =?us-ascii?Q?Up66njiC/7iHsly6T6j/Kr1C+zUHzvgZLm2F+8tKourBtr2A48gN2gpTGpSL?= =?us-ascii?Q?zKuCKBTR6qP6s+YEgLoM8pmJhbbI4x3N2dh9zyfy2HWsNNP2g9b+NujK6Nc7?= =?us-ascii?Q?XmtbPtwFsjfTt3XCi3vyURF41yed8CjjoeiNGr9dX42bnw5qFPD5n1STz32D?= =?us-ascii?Q?cbZLvIa4nUGOr02mi5E7tui7lABxT0qKSWXzimgAMN+58NDsUS2GGSQSRJAj?= =?us-ascii?Q?goMXxx4gmG7AQIdd0iL0RWZhyjkkfYE6jFju9uSm+M6SGgk4ALrVUstkH9a/?= =?us-ascii?Q?Oq/uCNa3MIHtWKAnFoV4108olFP8MO1XzyM1Uskv4BVjWj5OEibJ1s2XL6Ne?= =?us-ascii?Q?k85ovY5Pnt8pl6dYbOduGMbN7H0U17qPmdos7USUn1Lf1bet88yuvu3EVgfS?= =?us-ascii?Q?Jk2TgAo3AZC583lLp3nujJQLcZNv3k5v7i5KpHvj/xxBLskNh3wfjCpW8bae?= =?us-ascii?Q?z0bDPWd0ytjCHTBaKKUI6SdfoDkouZLR61HlTW8aNFkUmtOjkEsl4Q6Fu/tB?= =?us-ascii?Q?HGzLzCGoPq1Wy6Ij1ligKMDc7pfIfdDndN9tzi8OPPy8GtVnyuzlG3iXDhEx?= =?us-ascii?Q?N2GUvnHTjJafppD7K+9kSdOsbAfarZ0HKKOJQjNu+Kqoq0XaXVmEb/CISP0I?= =?us-ascii?Q?Es3XRm0k1VBtwZbpZcK/aS9Yf1ZLblM1Lf7raw3/eOjtP6aCkqEI5j4MvA22?= =?us-ascii?Q?Gp0weTIBzJP7JD3qxwbPf397v4MVbFajWW2HhngdNhNvVu6JapnfxElA+Reu?= =?us-ascii?Q?s2ty/YySCBdekFbKy6W4z5N7p907duTgWhysWaonxr/XKC+g0LnW2OsoKWHY?= =?us-ascii?Q?HoBzEGA0iesmiOluecmu7Wd4YzJbl3OClhAYbPWQGNpqC+R4xhkq/UGf2z67?= =?us-ascii?Q?Pw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: gMmlGCvaO6ikae/o6r3/3TPDVWYrgcIsddPpm2xmhZo1SfRsujZhkEMVGY/8fmWh5rsd5vD3J33++hkntwB98Ny7jyXisMl2eFRGT11bivACP2+mG7ryaMXAr+aOjwJYbScjd6sOLsvH2S3e18aWN27Dm2KcdzQdnSb2t5ZIZJGzR1f0ShH5CVsw21iILt8ezQ0Q4lEuEStss1rFuZGXSxX2zrvofhkekx62lHY0Zwh9a+FsBQgqPHGaYSVJBocnzrdAY6hdA7K9ARY+CWgnmOAPYVbuF18Qba2vfjUpbkE7jEWQ5BIX6QVo5Aq9D/adnFCCZmr8Y75teeLLj8myG1v5GXZepj3SMsq0VwhMz2wNP6R9tXUdSbxARbg5IW42UQdoia2ntMNJ7H9+0DAnroL9i69ykaWKcpZavqMAu1T7IwVsxH/ZHa15LRuIb5X/0nOw2oREiCP+n/tF7TJbLHf1YX+Nmcd5CxSyCd9KZieTBWVumBy3cDW5X67SKXIoWKig2jmL7vbDPQgso+oORZsBqO40Idw34GyaNV/8wpALSH2xs6yZvN/9FoAorKVsBxloWZACK5s6eDyB8MD1DthQ/1noC+ogoPveIvJ/gKy7WdPzniYugFPnU/vE3meZF+UUzTAce2obmbwhr4q49KsuOYQNecmRphtDI6/UIlIwoF6mOxtIYCz31TEnKT1hEpPdHmmIrO2TrYlxP0k7r+/RwKyyJueiTaUx0s5t17R+zB/Sa4AfcXPuJYJqCiKl9X0cywc7lCtCbF4hshq4/ef2YaS12zzQb0maUmtggD7gCYb3hLXmYeodgIpx8SpLwT0amTxvvOHXnOTP+5Cn1yrqaVnW1mV+Y4T3Q0DkUv0vpBupBoILrsul6A2+wKP8 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c209bb6-2c1f-4ab5-22d4-08db0d5db764 X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 01:00:36.4844 (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: da4iQUl869Qz14S/8sI34UgfZysqzfOY/ebkfCayuushyg/Ho7zFckBwccnzOqOazM0yGb9aBzbjkPU5e4bPf1c+FXzKxjpkFjmB1Ek69tY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4921 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-12_12,2023-02-09_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302130007 X-Proofpoint-GUID: GeV5u-bcwJHfxND2V62cAMi8tNKIUB5l X-Proofpoint-ORIG-GUID: GeV5u-bcwJHfxND2V62cAMi8tNKIUB5l Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This preps set_kthread_struct to be used for a setup_thread_fn callback by having it set the task's comm and also returning an int instead of a bool. Signed-off-by: Mike Christie --- include/linux/kthread.h | 2 +- kernel/fork.c | 2 +- kernel/kthread.c | 89 ++++++++++++++++++++++++++++------------- kernel/sched/core.c | 2 +- 4 files changed, 64 insertions(+), 31 deletions(-) diff --git a/include/linux/kthread.h b/include/linux/kthread.h index 30e5bec81d2b..94dffdfa17df 100644 --- a/include/linux/kthread.h +++ b/include/linux/kthread.h @@ -34,7 +34,7 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)= (void *data), const char *namefmt); =20 void get_kthread_comm(char *buf, size_t buf_size, struct task_struct *tsk); -bool set_kthread_struct(struct task_struct *p); +int kthread_setup_struct(struct task_struct *p, void *data); =20 void kthread_set_per_cpu(struct task_struct *k, int cpu); bool kthread_is_per_cpu(struct task_struct *k); diff --git a/kernel/fork.c b/kernel/fork.c index 057274da64fb..bd60ecc6b29c 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2190,7 +2190,7 @@ static __latent_entropy struct task_struct *copy_proc= ess( audit_set_context(p, NULL); cgroup_fork(p); if (args->kthread) { - if (!set_kthread_struct(p)) + if (kthread_setup_struct(p, args->fn_arg)) goto bad_fork_cleanup_delayacct; } #ifdef CONFIG_NUMA diff --git a/kernel/kthread.c b/kernel/kthread.c index 5e7c8f3f184f..b67c2caf2ccb 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -46,6 +46,10 @@ struct kthread_create_info struct task_struct *result; struct completion *done; =20 + struct mutex name_mutex; + const char *name_fmt; + va_list *name_args; + struct list_head list; }; =20 @@ -107,23 +111,58 @@ void get_kthread_comm(char *buf, size_t buf_size, str= uct task_struct *tsk) strscpy_pad(buf, kthread->full_name, buf_size); } =20 -bool set_kthread_struct(struct task_struct *p) +static int set_kthread_comm(struct task_struct *tsk, struct kthread *kthre= ad, + struct kthread_create_info *create) +{ + va_list name_args; + int len; + + mutex_lock(&create->name_mutex); + if (!create->name_args) { + mutex_unlock(&create->name_mutex); + return -EINTR; + } + + va_copy(name_args, *create->name_args); + len =3D vsnprintf(tsk->comm, TASK_COMM_LEN, create->name_fmt, name_args); + va_end(name_args); + if (len >=3D TASK_COMM_LEN) { + /* leave it truncated when out of memory. */ + kthread->full_name =3D kvasprintf(GFP_KERNEL, create->name_fmt, + *create->name_args); + } + mutex_unlock(&create->name_mutex); + return 0; +} + +int kthread_setup_struct(struct task_struct *p, void *data) { struct kthread *kthread; + int ret; =20 if (WARN_ON_ONCE(to_kthread(p))) - return false; + return -EINVAL; =20 kthread =3D kzalloc(sizeof(*kthread), GFP_KERNEL); if (!kthread) - return false; + return -ENOMEM; + + if (data) { + ret =3D set_kthread_comm(p, kthread, data); + if (ret) + goto free_kthread; + } =20 init_completion(&kthread->exited); init_completion(&kthread->parked); p->vfork_done =3D &kthread->exited; =20 p->worker_private =3D kthread; - return true; + return 0; + +free_kthread: + kfree(kthread); + return ret; } =20 void free_kthread_struct(struct task_struct *k) @@ -131,7 +170,7 @@ void free_kthread_struct(struct task_struct *k) struct kthread *kthread; =20 /* - * Can be NULL if kmalloc() in set_kthread_struct() failed. + * Can be NULL if kmalloc() in kthread_setup_struct() failed. */ kthread =3D to_kthread(k); if (!kthread) @@ -423,6 +462,8 @@ struct task_struct *__kthread_create_on_node(int (*thre= adfn)(void *data), { DECLARE_COMPLETION_ONSTACK(done); struct task_struct *task; + va_list name_args; + int ret; struct kthread_create_info *create =3D kmalloc(sizeof(*create), GFP_KERNEL); =20 @@ -432,6 +473,10 @@ struct task_struct *__kthread_create_on_node(int (*thr= eadfn)(void *data), create->data =3D data; create->node =3D node; create->done =3D &done; + mutex_init(&create->name_mutex); + create->name_fmt =3D namefmt; + va_copy(name_args, args); + create->name_args =3D &name_args; =20 spin_lock(&kthread_create_lock); list_add_tail(&create->list, &kthread_create_list); @@ -443,14 +488,20 @@ struct task_struct *__kthread_create_on_node(int (*th= readfn)(void *data), * the OOM killer while kthreadd is trying to allocate memory for * new kernel thread. */ - if (unlikely(wait_for_completion_killable(&done))) { + ret =3D wait_for_completion_killable(&done); + if (unlikely(ret)) { + mutex_lock(&create->name_mutex); + create->name_args =3D NULL; + mutex_unlock(&create->name_mutex); /* * If I was killed by a fatal signal before kthreadd (or new * kernel thread) calls complete(), leave the cleanup of this * structure to that thread. */ - if (xchg(&create->done, NULL)) - return ERR_PTR(-EINTR); + if (xchg(&create->done, NULL)) { + task =3D ERR_PTR(-EINTR); + goto end_args; + } /* * kthreadd (or new kernel thread) will call complete() * shortly. @@ -458,27 +509,9 @@ struct task_struct *__kthread_create_on_node(int (*thr= eadfn)(void *data), wait_for_completion(&done); } task =3D create->result; - if (!IS_ERR(task)) { - char name[TASK_COMM_LEN]; - va_list aq; - int len; - - /* - * task is already visible to other tasks, so updating - * COMM must be protected. - */ - va_copy(aq, args); - len =3D vsnprintf(name, sizeof(name), namefmt, aq); - va_end(aq); - if (len >=3D TASK_COMM_LEN) { - struct kthread *kthread =3D to_kthread(task); - - /* leave it truncated when out of memory. */ - kthread->full_name =3D kvasprintf(GFP_KERNEL, namefmt, args); - } - set_task_comm(task, name); - } kfree(create); +end_args: + va_end(name_args); return task; } =20 diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e838feb6adc5..289b9941b58d 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -9925,7 +9925,7 @@ void __init sched_init(void) * if we want to avoid special-casing it in code that deals with per-CPU * kthreads. */ - WARN_ON(!set_kthread_struct(current)); + WARN_ON(kthread_setup_struct(current, NULL)); =20 /* * Make us the idle thread. Technically, schedule() should not be --=20 2.25.1 From nobody Fri Sep 12 07:03:35 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0A36AC636D7 for ; Mon, 13 Feb 2023 01:01:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229645AbjBMBBD (ORCPT ); Sun, 12 Feb 2023 20:01:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229655AbjBMBA5 (ORCPT ); Sun, 12 Feb 2023 20:00:57 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 153EC1040D for ; Sun, 12 Feb 2023 17:00:46 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31CNGuKZ017520; Mon, 13 Feb 2023 01:00:43 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-2022-7-12; bh=B0gQwzsBqSfXfh+7u+zPPqMmnPqwvX+39I29dUBNXr8=; b=yQT1iqwCu7aAd1VFu+uZ10H5R629aS+q/bY85Ywlgvw2lEyJwjD7qIhDiMWifmGdlX7w D3suWCR6XyBVQMWsDxknekE10/fBfX8txTFFxcVhziDncngQVls5B95MAfdlDVURZu0k JOPjNtJhw/WAA1+szE2hGsitP0od1wNo9BS9K/zNBzCmLE+/11dlj9fpxJiuAf3JDiBL DN2yXAn+41SDE3ePXiSRqqTH6PC3XpHTCa6VRZ49CeHYWdTKdrNgXMu+Cl+cngyxeFgp RLpm9hDr3IbqA9XK/fywzlq1/AicLW695tYkNh/JgbMc7uOPweu+6egbWFzgryJGugJb DQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3np2mt9npw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:42 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 31CLUFJD028765; Mon, 13 Feb 2023 01:00:42 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3np1f3fncj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 01:00:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RJpYNOIXmTng6Z5UqeUlp4bWGM/xmYhjSzGYZRCDHm/djp7q0m68HADuAFxi7nbmdyxMEc/50CRL6PSa0jq+rzf1MyMqUSAo/MKhgpLUT7bH/BihacuppypFy1XgtVlVDWCMy3pYTEp3u7FHJW067I7i8ZcW92H8X7yN5zVswxiMqBGM3yJr6y3qpmFffLxINU3fPcpGidY/FmFUnSzgHuGgxpwOcsfS4TVhqel93rhnL856xHQlAU9RKn2A2LxWs+q4dbCI49bjK/yxjnETswHUI+Ddo1PqwlrcCleIQqU7f+soul5jQeHRTFHnY2HKsWE3miM+LUtyd9czuPIoEw== 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=B0gQwzsBqSfXfh+7u+zPPqMmnPqwvX+39I29dUBNXr8=; b=daKqfZoTOHIO/dlXsrcSqdV/UjrlEhvE8pL+u82qYfDYkJBayozbtOD8zko3SyNqfsyJ2ZMi87wtmRGQpLwBoWmMbch91udHM/YOvIDaJjRTDP9sszllTGsOZcgztC6QCHjxh6YCmOWMxUwbfNoyGhLaoAGM7IpZeSurdb9qkWmAofP92c6IFMfL83aCCv46JHi+eFDhw4HqD5fBA+4KeiGuqPFRgyWpp1N1Ruz/avRmI3CrqpNOK5Z0PTmZj8CjVcbmKhhLTLDv/q7iXbF6zM8Gs6yPOrZf8O1JURoLdTdmPMnZ17Ynkpt4uZW82a/yj5a47gg81qNFHWhdt0sGAQ== 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=B0gQwzsBqSfXfh+7u+zPPqMmnPqwvX+39I29dUBNXr8=; b=CPGpzDngZOv5gwLjz3X0xBdesbRRsotk9niksc2K2o3GRq13h4D3lGtPCXeIxOxtS5exAP8tjxWWylpe3rlZEmKYd/F8ff+1HVty8Cy8UgMO15YwYu+7H8tMrhuNFjxznjwGrljt646AJmpvVTGk1DZPPUXpouckmNT41qWFLiA= Received: from DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) by CH0PR10MB4921.namprd10.prod.outlook.com (2603:10b6:610:c2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.10; Mon, 13 Feb 2023 01:00:39 +0000 Received: from DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f]) by DM5PR10MB1466.namprd10.prod.outlook.com ([fe80::c888:aca:1eb9:ca4f%5]) with mapi id 15.20.6111.009; Mon, 13 Feb 2023 01:00:39 +0000 From: Mike Christie To: brauner@kernel.org, ebiederm@xmission.com, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org Cc: Mike Christie Subject: [PATCH 5/5] kernel: Convert kthread to use setup_thread_fn Date: Sun, 12 Feb 2023 19:00:20 -0600 Message-Id: <20230213010020.1813-6-michael.christie@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230213010020.1813-1-michael.christie@oracle.com> References: <20230213010020.1813-1-michael.christie@oracle.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR03CA0017.namprd03.prod.outlook.com (2603:10b6:208:23a::22) To DM5PR10MB1466.namprd10.prod.outlook.com (2603:10b6:3:b::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM5PR10MB1466:EE_|CH0PR10MB4921:EE_ X-MS-Office365-Filtering-Correlation-Id: c0410924-2526-46bb-ed26-08db0d5db95f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uYnBBaCk4Fvu2eiHDeZe5Dk1cSqVECD5b3owXhVMfqmLyvu7S66ouERt1ZETHso5gH665k1uGluZruIGcosHOGxpjFBNSSvu72w61jNaJvXlBF3RkF1u8VV7LwLGjPmi2Mxzi6gio8kcGjLxPy2qx7F7kBijAz2mJ8+iV16JQ1SzWxF/WpakPq26d+0Y1oo7dGwjpKKAoouac4VXw0vktok4sOaHDNhllIaSmdMQY3KXCJkCAK2XgEYmWSHbuoMY6Ma3dUThGIpSvF+8n5jFJmyxO0m+zoyoTTvzHuec4tMO+AbM5aYB3MaV5zk3jurC1fxPVnaXr4yvNEnlv16BuOI5n96FcEJ5wJ/VV0ghRbQz3NFMTL3xxegXQ8lDDOYOmvCq33N6Pkz9YHLmKLh7ZfRfSj6D+rVW2fOhwZAHU5cpRdrmVGJGkfkyZPyUw9rmpwkUPW7UFnC/YcSM7asbRXHb5lg0oDNM8FyqrO/v0UU26+JNcxAXq4joOKIbkguEmrG4L4fgWIdHNfDZDAQhSwTT8jE/M3iRktdxKNzBs+Wcs4ao/5cItnlvEILfhto2JAGl108yvK0yMXCau06n+tHIK10NQsCickNMQryEuHAYFfRJAT4xS/96sb7+oTgdAEqIg1Zksy/g+1vPb/xNjg== 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:(13230025)(366004)(396003)(136003)(346002)(376002)(39860400002)(451199018)(8936002)(36756003)(2906002)(5660300002)(86362001)(2616005)(83380400001)(4326008)(316002)(107886003)(38100700002)(66556008)(66946007)(66476007)(8676002)(41300700001)(6486002)(478600001)(6666004)(1076003)(186003)(26005)(6506007)(6512007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rKGjVcjVF4JP4uQ9J5L6rWF68qttmHs0J1KeiKfUL7x8gEwwywHY5cOSU8Qd?= =?us-ascii?Q?FXU1BPuWM/OqXBXtCW4Jv3bP8AW0hAbboXUD4osLVE0G6dMOPpbh70GhGR/O?= =?us-ascii?Q?KyIjlnl5D97bA0OqYMoLN3JBEa1Z/5pxzNa1xjMlHdMxXOcANWetWJ8qxvfP?= =?us-ascii?Q?uiZR3UNCaAPHDvUXOboMsAnOzzqXBClMVHQKLMYi80wLlRZ99pqElVP56S0f?= =?us-ascii?Q?cvC4CG8RRCYPsfZ3iV+mdjCcW7yfnAybxgyHMlIEjmNcBC8e10+xagPoU6P0?= =?us-ascii?Q?gXcJV7U51RowstohZoYGCklGPJGSmJa+w1vF1hTpaAmp/ZihB0k5xAFF/yTs?= =?us-ascii?Q?hgPfkAQDx6wiH/seHCtx84AClT024hMNmdiCxQTPut8BNKm/A6a1fW1qL9wv?= =?us-ascii?Q?0b5zvvhRFXv24vi4kJhO0XdWz5Pn8K4nJNwn536g/it29Zo4m45RS9ppw6Pi?= =?us-ascii?Q?FfCSl+cCoUnpiYooX4HHgLC8PxKeZJlSsk1xR5lQpd9+RVEJB2m7lmOoydyW?= =?us-ascii?Q?km8hblW1yPftCxj0zHZo0fTLGBrfR26b1iFxeageFyYWDnvZ5lApStKdgrHQ?= =?us-ascii?Q?TZvVWL1UQ6cMl4LjE8N5RyVILNqK6VdcTvieeb1rPWSamB3yBuZcYhKI5oxm?= =?us-ascii?Q?J77Huwq2vy58xszmA75LuIKAbP8CJGXpmn3afIq83K5YB54+H8Prj++AEufM?= =?us-ascii?Q?Mlmlts3HaS0Abplmeh+BdmqoP9c+hZ1EMg9wofT63zxpgBScHQuOnwVLqF2N?= =?us-ascii?Q?Dpw99/qnaobdNwgnPe6oR3JvmirEXlU7wqloDWQVtH8K4D/khsiZLe3Ed8jP?= =?us-ascii?Q?mIIK2tFVWvkkQsZigVwLXPZjwC0Zd5pZlzk07o7qcmTjBayKeNQTnmWhXKji?= =?us-ascii?Q?y5hSnmU02AR7ohceO24Ur5kNnZ7aqARMPA0T83qKZ2zPVsLO30Ss3t7DiR4Y?= =?us-ascii?Q?PMHKuuTIrAUbv6lAFTG3fTg2YycQCRj9LEv4a6nuZn25cu2Q8dcTi3M5HEMe?= =?us-ascii?Q?n0l+GVDWZ1DKI1N74+P+OC1Ldt5rcU+mWhMuYJ+35MAtNvSfa4yKtT/N4v2b?= =?us-ascii?Q?bAsEW5rP5YhrPoKu1E4tf6JcsrX1G7S39yPYIMPn/Rj4XiVO8dAfl8NWDW9H?= =?us-ascii?Q?6RhXyrgd4VfjyYzqnbeok5MoGqamG+PL4IZHz8bN6CjUpQ0IwCwpSvtTWrH2?= =?us-ascii?Q?sF7q/+FUO3IWv0r85Ha7SO63+pr/bJP7CuhBwsnX6/j0lVngmmW0mZYah0f3?= =?us-ascii?Q?zZlnBs+CAh6x1X8VBZBGRWBshWFRbcZ7s/mqg1pWLAkexalfLGRidxLGA8Fs?= =?us-ascii?Q?V6455sW9Vbon3rwcdJSFX69ZZ0B5p2tzIYFZwdvgMIXNyCb6ol3o5m62os8F?= =?us-ascii?Q?KswJSB3RuQCOrQN+CQH/paz3Ika+/fZr8zxcj2740t0Eq7EC18hktFeuEXe/?= =?us-ascii?Q?YHHSuh7ePeOCsk+qmJfs49q6mpCZGEbfq07e9j9prubTQWnSrEnaYTZ2DgDV?= =?us-ascii?Q?5MKaqDvTVpTDrNjfRNFxPRgUqYkjFDsnfozdPfKmXg9NzBtyccqrhqM6RrNK?= =?us-ascii?Q?oCLaFkp5PrW0VVh7AuQicfFBI3bqut0+dnPXscaMx/aiGht+9EtXPOfQpqG6?= =?us-ascii?Q?kg=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 6ybF7IugkYg4hTi8orUZRiG/fp9a9wGLWwjikHL7Efph5+CHjjZDgYVtE1xElh7FVN4Fix3telwIHQQfw3NP9DP19Ig9WYD0cmeDakDyTUk7ByNovw9eArcLdc1UVpJxfuPO9qhYUsTmKGLGBAmSDyYftVVHlmB8oA7HWFo52NCEuVznf5W2ph3csP7uYJsr/mv7GSc1mgpOG5DOsd8ZxSK/ZFEI669hcZi4WiMFOsdRZa+yjIwP6nlPZlBpyd3s77QCryC8GfRnTcXkiQJL5sRw1L5YsFnV4Qq0AOQ8761sKO0draT+JBZ7cfEI6icJSw2FwApDDVmTohPQlOTwe+Yr/ZhaDQa5qPRyMExzEjMeE8JoBlu7lJ3ptXV47aWTUPRY13clKpEf22GnYy143Z7hArN0VmsnNekStIorDPZp5l0tXeyUancvdObEUmmzuPhPlEsYactBk7tSjQ/bncH6qKpeCCBqVWmEFkRYf/X+5zf1VbxQIMkF7IqXyOdt4e7lMAa2pB0CaPNRbwfSvkyxnt6zryuyOiXTVjFcP3lNUtMiqhiWyrSveuPltVBBgptpkDyhOLUU0JjPsgcufKGK8+0fK2asCyjM+/ktuIjlTilMClkm7Bzy+SxDESFQGLKeUMofHh7BRpTGCS3qRV8wyMOUFywJhw2wXFM+7QqXslGlza3pLERb6m5v6o9slhoO0+hspU9b790vAjxRcQ5tSIB2+DVw/38ogdzSJUv2POSOZgOEFi76he3a+DhN8VnBs+KiZx9jRvdtwyITf5Ekgca9Fpb5rmM/7mTTzqg1ec7kpzj+MBAa3mfCMc9DBjcc8lqGfYCawPY3DJqErXtLISy+h4+iXfnAKTn8VlZJtSlLYg9bzI4VSiT6CE41 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0410924-2526-46bb-ed26-08db0d5db95f X-MS-Exchange-CrossTenant-AuthSource: DM5PR10MB1466.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 01:00:39.7966 (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: qc1UgzpFjiZ+FqSAVC3tJu1uHh0B3CcnVpLMmY/RFKVrVVAj98R+oX1xdL2yOg4O2S+9WDBtDpIZNYy6rUPqfUA6qzX+ZBKmu+HbHQyrEaY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4921 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-12_12,2023-02-09_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 adultscore=0 mlxlogscore=999 phishscore=0 spamscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302130007 X-Proofpoint-GUID: Airdgt-bD4DuRjolji43sYD9ODEezn35 X-Proofpoint-ORIG-GUID: Airdgt-bD4DuRjolji43sYD9ODEezn35 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" kthread_setup_struct can now setup the kthread struct and setup the comm, so remove the call to kthread_setup_struct in copy_process and have kthread.c set the setup_thread_fn callback, so it works like io_uring. Signed-off-by: Mike Christie --- kernel/fork.c | 5 +---- kernel/kthread.c | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/fork.c b/kernel/fork.c index bd60ecc6b29c..7cdd85befa41 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -2189,10 +2189,6 @@ static __latent_entropy struct task_struct *copy_pro= cess( p->io_context =3D NULL; audit_set_context(p, NULL); cgroup_fork(p); - if (args->kthread) { - if (kthread_setup_struct(p, args->fn_arg)) - goto bad_fork_cleanup_delayacct; - } #ifdef CONFIG_NUMA p->mempolicy =3D mpol_dup(p->mempolicy); if (IS_ERR(p->mempolicy)) { @@ -2598,6 +2594,7 @@ struct task_struct * __init fork_idle(int cpu) struct task_struct *task; struct kernel_clone_fns fns =3D { .thread_fn =3D &idle_dummy, + .setup_thread_fn =3D kthread_setup_struct, }; struct kernel_clone_args args =3D { .flags =3D CLONE_VM, diff --git a/kernel/kthread.c b/kernel/kthread.c index b67c2caf2ccb..7776d19789f6 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -429,6 +429,7 @@ int tsk_fork_get_node(struct task_struct *tsk) =20 static struct kernel_clone_fns thread_clone_fns =3D { .thread_fn =3D kthread, + .setup_thread_fn =3D kthread_setup_struct, }; =20 static void create_kthread(struct kthread_create_info *create) --=20 2.25.1