From mboxrd@z Thu Jan 1 00:00:00 1970 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 16192C7EE2C for ; Fri, 26 May 2023 05:32:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229790AbjEZFcy (ORCPT ); Fri, 26 May 2023 01:32:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233071AbjEZFcx (ORCPT ); Fri, 26 May 2023 01:32:53 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DAF9198 for ; Thu, 25 May 2023 22:32:45 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34Q4j8SO029549; Fri, 26 May 2023 05:32:42 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-2023-03-30; bh=ZD6eHaPynKf2Z3p0PEOqe54/CV3oS/O8pDYhH+JCHho=; b=QDrAC0BMgGJm6EcLHWnoklEZQ9b6vn2C3HYrhbbqcJD4b66y+rUM2uP3W7xDtn89M3tU MUcSmBn2d/olK+QX986lzh/hmLCMqyelj49vj5dgAbUaMt6RuPpwNpcxcC+TXhRc0IDm KjcN+SSdrylRZvgotX3L+QTWI1iIOKJCISkD9IaBCNEEuO1Omi6hoRTxinPvAUxKeq92 2wp0pwCoP/CZQGiJoxEKnKHu9yQM/7gZyRjAiEjhQYDugDIx9al7fgddHYfyrYdEa6Fv duUD04gVAvk4bCs9vzRItU4yRGG/01Teao2cSXSr2/1H1s19pDLeJVmWBXZ96l1Z3t3O eg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3qtp0qr1y4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 May 2023 05:32:42 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 34Q5E88O012817; Fri, 26 May 2023 05:32:40 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3qqk7jk377-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 May 2023 05:32:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=asVmTstKrfQ/qUpiy6lOUDASpWDouNzcV28nA0W9PfmkAGVf3RmHfxUZlaVSBHk/77iv9R/0AsnlnaGNcw29o4jVgQpu3YRGFSIpOvO7hwogCJnaLgc2urad1Jvt2079mE93Vu0C5agVNSWNH02syM3BPuJdq1lfI+QmFUuKm+bCUClOqZEDAO7pxdB9t7Gopsvd3WoMBcLuqxum/DxWHc4rF0JZBl5OC00L67lVSixuVJ3brWpmZDqSRJ6hU2J+/GnBB3m6O/mWulK8MhhXUf3xCwAl9e+l9PjQbOJIaK+jJNkCz8SvVgw5Iy/U4U5LkDi3VOswio674tuD8T5h+w== 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=ZD6eHaPynKf2Z3p0PEOqe54/CV3oS/O8pDYhH+JCHho=; b=bb21C/NI3qQPrcLIjyH5pXbfbp2KS8j8/6V60BZpUMAjsCX7Eo0DYwhfemnxfmZ8Z71/SosYbzRPu5lxlDJ+kgXNWJyByZo04TbbFawtpsAFXjRVtdPm1sPpCG+UniV8HozfBXm+D8zjTVs4mvp7R0V+CdUJ0RMzevzVjSThXN94SZvsdxHxMNr6shZvs/bvKhd1MwPWoo8AMzV5FNr4Sh4Dk/a5gFOcw+TLLp1/6wI/cCZEpgnbTKlgMTssyzoqJiH6q7sMUkTh6VY6Z/x++38tG9H7Ogvx9wqgUqUcnZ3NX0o3MZ+2aZSgQsnEbXLY8o6BI1KjhqWhfuNXJtqpQQ== 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=ZD6eHaPynKf2Z3p0PEOqe54/CV3oS/O8pDYhH+JCHho=; b=wrA1X6NHbfimAWLT01v/Grsa/2/HgPjA6lRKjBurNZQpnY2vZ0QiJ5sXdvHuacqwDzdV0jj6Mp5ofE6ymxREI43l3Tv88eMntnuXjc5+XOuQcnm3z+EuYtDAQ1ycGoFLzxbBAzqgYTTHYKMTY32AQT0UGFSSIYHtPy9VHwuR93o= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by MN2PR10MB4288.namprd10.prod.outlook.com (2603:10b6:208:1dc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Fri, 26 May 2023 05:32:39 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fdbb:b921:1ef:2d44]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fdbb:b921:1ef:2d44%4]) with mapi id 15.20.6411.025; Fri, 26 May 2023 05:32:38 +0000 From: Indu Bhagat To: linux-toolchains@vger.kernel.org, rostedt@goodmis.org, peterz@infradead.org Cc: Indu Bhagat Subject: [POC,V2 5/5] x86_64: invoke SFrame based stack tracer for user space Date: Thu, 25 May 2023 22:32:15 -0700 Message-Id: <20230526053215.3617580-6-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230526053215.3617580-1-indu.bhagat@oracle.com> References: <20230526053215.3617580-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW4PR04CA0096.namprd04.prod.outlook.com (2603:10b6:303:83::11) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|MN2PR10MB4288:EE_ X-MS-Office365-Filtering-Correlation-Id: dbe0f9f5-8186-4ea1-ad12-08db5daa9ddf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NepL2eMmN5s8br0aBA5chhlefSu7ipBA6GDqGp9YcjZWZue9ibnkKb/3UvZ52zPDkuCCQ5+GcjnFlJ8DSIU1dCloZZuesfGIIiP+9Nq74hjclp9QuALAlc3JfOtNsj5LG9WyJAcaKV9fbGw1CtAmZOa+7yUXGiZHzhAqVZAOvTjVZedkCuIBuK31on9I2E6kvC49e8nQCb+GoE4ddNE/NKtRRDOLRzw7gnAImSftQDOzrCYJty+kaHtC6IRNoSp8TC8Nj2+dyIahCaxEy7HrwPUeAV+XsUvAXzo94F+J00Mbh80ILdZQbncBevKugRm080R5MqpLCxXCWm5R8f/lJnDLTbDV4HE6upsTPruSDqd9005spe7Uh/nULjhUp0uqQL43EqgEahdhgjVQWyFSU1TozvH/ZMgv9SK0m2ED2224fqUolvLjhpVixO1UvCt972LQp4VJPqTxv+w78qdKXF8fRdnufyC9Xv6m1RflBIWVoFgMo9CsVUE1evmvfqdLI3JvkD+xNBPKmVPTduiQQgRhsmBZZwYFZNILjODvh+lSsYBsWaFHs350ujZlTTcz X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2158.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(136003)(366004)(39860400002)(376002)(346002)(451199021)(38100700002)(83380400001)(6512007)(6506007)(1076003)(26005)(107886003)(44832011)(36756003)(2616005)(2906002)(186003)(66556008)(316002)(4326008)(66476007)(66946007)(6666004)(41300700001)(478600001)(6486002)(8676002)(86362001)(8936002)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4xRRwLLlURRmY4UTp4NHISr6tUiCEi1iIRr65ErJmCxpvfZSmGFsXilJZAJ+?= =?us-ascii?Q?dl328gIL6ULnPU5+DwDjWJVhSW5KDK/+i1eTSC1Ocr+Q7YEw1tzYYxeEJXLM?= =?us-ascii?Q?eWe55Ox/lKHP13u1W45WB7ZpxCHbrWA+raXWC76f/wLXNLuA5neq/WIOGucm?= =?us-ascii?Q?t47FcTzIEsFNTvcl/FfJ/EnKpmOu4wQ1Rz334k/RZdbYTaKvybyCKTi0lJX1?= =?us-ascii?Q?PjyeRvsZ0rXxO9un/Tr94t+kNEndVYhHvT5x3eX+B0QIIGk4pc47zVc1on7/?= =?us-ascii?Q?zkM9/ICyn/OUYB74B1gtZrKTfSxZCpySYAq5wii1sCveTIKAWH/ADcvM3Imf?= =?us-ascii?Q?Suze+VeKWCUJl55DQPVMeYu2KqOWrpwvXxDZecXFCMAHWs/KIEcvUt3Y8hsW?= =?us-ascii?Q?iehh7VoWBdT+iHBM49qodfOU41VOHSrr/hu+fixhIWSBgpyMWlkF7aRz7vKs?= =?us-ascii?Q?1RXFxe8HOiXRA1FnYnLR3mHTSNQUSmRNnsKY8P+qLUvxJWdGCO99kLyEmlAS?= =?us-ascii?Q?oX2s+RM8uVX2Y/i84+TYPH9yVUetaHiqs7Ggd6cmwUT/0RU2/TyB7j4JfONO?= =?us-ascii?Q?ls5vFlWwyTni6xmLB7kf2CSKp+d1gV69OytXTzrqfrBzQ1oj9ykhjU/iqx4r?= =?us-ascii?Q?zr7Ic93X3iNFXVaFY5s0ErfCckJV8EcwMPJkB+tdXUihAInIzbBIkIvGGNpV?= =?us-ascii?Q?ohfzxhw+e77dbsuZfVHPUhpouAOMTIhWqXpVs7VIdwpEvlaAf7QklqvGO2LT?= =?us-ascii?Q?mdWbd1EMeB2Eipv0Jl0PduQQ9+RN6OYMX5OfGzJEwqVQky5GTQ1oyk2Zikbe?= =?us-ascii?Q?7BUd71H0JDwvKqzntrrpnHHVzrirPQ3e0RTgWT3iLY18ijhxLccaMRT5ixPy?= =?us-ascii?Q?Wyb5SBtrfxp6whL/0k7jf0AWwyOVmytWoRJuMokn+e01IOowQGqm6zRNhYb3?= =?us-ascii?Q?ohjDDwHFcjqMZZSGconAYHq9eMPpWf3Hpoo8vN4M7id1WwBi0iO6Zf8znHrz?= =?us-ascii?Q?L56tG1gxl6TOtGt5eCD3qti5FzXdhncZcJssXzWjCNCr6kqpGiJU688QRlWK?= =?us-ascii?Q?RGFw0NCI9tKptov8kYASIFVY0sa9cO4nbiInwbh9PjkGtz2bpLlyVj3BjV78?= =?us-ascii?Q?I+hc4612zNHv0lvJE5AxQHyXQNQaAh/+n3oIsMBbDEm6vT5tpu90OgUSC6WE?= =?us-ascii?Q?BwU2M+VjOvYvXyZhEX3b9whJCGmfXQNslIx0v3AEHdccI74I2bYGFu/J30zu?= =?us-ascii?Q?zn/BUSyjajNL2dXl/jpQDOXpZRs2CuPc3AfUOY1TmK9CdR+uelrVle2WqGWG?= =?us-ascii?Q?Om4Kdir/lbrJhXuzXKsvGEE1Fzm755eeGbUGhAhNPCBV707p56E1Ly976TZf?= =?us-ascii?Q?p5mUZpyDo7LgNmNlT8JfmlWindZKFNqna0IPk3HqnBPtL72DKdhZSLXety7J?= =?us-ascii?Q?vnWHbO9NsT1ffvEEOKSSDwIlHuTSw1kGjiCOUhMbbrrUy3CDoXW+ZVkwUgOt?= =?us-ascii?Q?Y0UbUV/EYUPrOK01TSvR+7MIne0/CeJCBuW4kr2RRQ6bG2PTWmu+tgOoPm4t?= =?us-ascii?Q?SwaV05iMX3vSjwyEqvnGDC5rVGLrxYjyZlJVCMaz?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 36nVWyfaTMn0sHph7UlHcp/C0upSknN9pIRuo8lX4zi5hwAWX8YWiBYGauQmVxLZD+vKfRrkuMDN8SerE14GN32HxvU2DJHhOFtB28SkHmkZZF/nYdv5SBd7mSRBlO6B+vWL8t1C778tCUiLKyzeKEetip23b85E5nEl7ujQaTUFP1Kwq+vYt22tasp8S16jGdJNzcvKaoJqM19A99Y5sQ+YazRTCqUf256h34HbuI7hupxYKZCBHLE9a7zXaky57V3VZV5rzFVaksL/LatMHFJuIjy0z1JhIZfgjvaGVDsTtBjELbk8RitlxwBLip1DpF9vHOCY6hvCq/4nNC3v9FcmnHsenRCS7jF62YW8+PeTTKdtM3zkWfAPvj5ZCD5UYZgK0sRLOR4GlbdhvPUuRx3noJ2Xqep5R0ozmVh2x13YkAfdf3UrrHrI4B6vhI7w+hz6Ml/CZFgMNLaiT/22ZtcWeJqmJkeyZAM4hMSZKEvgv5GcdGEKHxqcR9lh1tz7p7jroHeuKrnGFhj2P+xU78AV1ZawwwoXibGXjGq2suwcFm7fMkuBqQWk84TAkja7xMzwoIhFugNKed0fguqJ+AJli0ribtXRKmQtEQqWpdRpm6vNsRxdjjfq8oK65c1jaYwZeuiP48S22CZYZYS88yc7RX8TnEhrVKBjL1btqMzca4SsZmIukdtPKXmjpO+1mHbsSQDHJ0NS59R/ejA8tw68aqiQjZ5Sc86r7AVJu/B7vRJ8PO3GvCt6a411fQZjZfB/Yew9gStCi/KT5iJ2DDBrs5jJeoWgKnHV7EansaRZjjkbUEyH7VDZWxiBsNHueyAtvRyOn8NPRQcSusBmcg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: dbe0f9f5-8186-4ea1-ad12-08db5daa9ddf X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2023 05:32:37.9357 (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: ruKkkzGQFM9+kbb2lgrZZ8e6w9dsvwlPv+twsYZedymYOFUQdwDRQtlM7AQzX9Zaa1eK3iZTByL7eG2N7rA2KQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB4288 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.176.26 definitions=2023-05-26_01,2023-05-25_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 suspectscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 adultscore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2304280000 definitions=main-2305260045 X-Proofpoint-GUID: 7l_J3ZRnzF2Jd2ADnYNvjdF-XXWrNTgl X-Proofpoint-ORIG-GUID: 7l_J3ZRnzF2Jd2ADnYNvjdF-XXWrNTgl Precedence: bulk List-ID: X-Mailing-List: linux-toolchains@vger.kernel.org [Changes in V2] - Code changes to use the sframe_unwind.h from its new location (include/linux/sframe_unwind.h). - No further changes yet. ATM, it is understood that this POC is broken because accessing SFrame sections may fault while the perf event is being handled in the NMI context. The changes in this patch are expected to be reworked. [End of changes in V2] The task's sframe_state is allocated and initialized if a phdr with type PT_GNU_SFRAME is encountered for the binary. perf_callchain_user() will fall back on the frame pointer based stack trace approach if: - SFrame section for the main program is not found. - SFrame state for the task is either not setup or stale and cannot be refreshed. Finally, the sframe_state is cleaned up in release_task(). Signed-off-by: Indu Bhagat --- arch/x86/events/core.c | 51 ++++++++++++++++++++++++++++++++++++++++++ fs/binfmt_elf.c | 37 ++++++++++++++++++++++++++++++ kernel/exit.c | 9 ++++++++ 3 files changed, 97 insertions(+) diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index d096b04bf80e..0351e3c444a3 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -2860,11 +2860,54 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent } #endif +#ifdef CONFIG_USER_UNWINDER_SFRAME + +#include + +/* Check if the specified task has SFrame unwind state set up. */ +static inline bool check_sframe_state_p(struct task_struct *task) +{ + bool sframe_ok = false; + + /* + * FIXME TODO - only current task can be unwinded at this time. + * Even for current tasks, following unknowns remain and hence, not + * handled: + * - dlopen / dlclose detection and update of sframe_state, + * - in general, any change in memory mappings. + */ + if (task != current) + return false; + + if (!task->sframe_state) + return false; + + sframe_ok = unwind_sframe_state_ready_p(task->sframe_state); + + return sframe_ok; +} + +#else +/* Check if the specified task has SFrame unwind state set up. */ +static inline bool check_sframe_state_p(struct task_struct *task) +{ + return false; +} + +static inline int sframe_callchain_user(struct task_struct *task, + struct perf_callchain_entry_ctx *entry, + struct pt_regs *regs) +{ + return 0; +} +#endif + void perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs) { struct stack_frame frame; const struct stack_frame __user *fp; + bool sframe_avail; if (perf_guest_state()) { /* TODO: We don't support guest os callchain now */ @@ -2887,7 +2930,15 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs if (perf_callchain_user32(regs, entry)) return; + sframe_avail = check_sframe_state_p(current); + pagefault_disable(); + + if (sframe_avail && !sframe_callchain_user(current, entry, regs)) { + pagefault_enable(); + return; + } + while (entry->nr < entry->max_stack) { if (!valid_user_frame(fp, sizeof(frame))) break; diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 1033fbdfdbec..750f9d397c1e 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -820,6 +820,32 @@ static int parse_elf_properties(struct file *f, const struct elf_phdr *phdr, return ret == -ENOENT ? 0 : ret; } +#ifdef CONFIG_USER_UNWINDER_SFRAME + +#include + +static inline int sframe_state_setup(void) +{ + int ret; + + /* Allocate the SFrame state (per task) if NULL. */ + if (!current->sframe_state) + current->sframe_state = unwind_sframe_state_alloc(current); + + if (!current->sframe_state) + return -ENOMEM; + + ret = unwind_sframe_state_update(current); + + return ret; +} +#else +static inline int sframe_state_setup(void) +{ + return 0; +} +#endif + static int load_elf_binary(struct linux_binprm *bprm) { struct file *interpreter = NULL; /* to shut gcc up */ @@ -842,6 +868,7 @@ static int load_elf_binary(struct linux_binprm *bprm) struct arch_elf_state arch_state = INIT_ARCH_ELF_STATE; struct mm_struct *mm; struct pt_regs *regs; + bool sframe_avail = false; retval = -ENOEXEC; /* First of all, some simple consistency checks */ @@ -861,6 +888,14 @@ static int load_elf_binary(struct linux_binprm *bprm) if (!elf_phdata) goto out; + elf_ppnt = elf_phdata; + for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) { + if (elf_ppnt->p_type == PT_GNU_SFRAME) { + sframe_avail = true; + break; + } + } + elf_ppnt = elf_phdata; for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) { char *elf_interpreter; @@ -1342,6 +1377,8 @@ static int load_elf_binary(struct linux_binprm *bprm) */ ELF_PLAT_INIT(regs, reloc_func_desc); #endif + if (sframe_avail && sframe_state_setup()) + goto out; finalize_exec(bprm); START_THREAD(elf_ex, regs, elf_entry, bprm->p); diff --git a/kernel/exit.c b/kernel/exit.c index 34b90e2e7cf7..14c57ecd03ea 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -70,6 +70,10 @@ #include #include +#ifdef CONFIG_USER_UNWINDER_SFRAME +#include +#endif + #include #include #include @@ -241,6 +245,11 @@ void release_task(struct task_struct *p) struct task_struct *leader; struct pid *thread_pid; int zap_leader; + +#ifdef CONFIG_USER_UNWINDER_SFRAME + unwind_sframe_state_cleanup(p); +#endif + repeat: /* don't need to get the RCU readlock here - the process is dead and * can't be modifying its own credentials. But shut RCU-lockdep up */ -- 2.39.2