Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp1032217pxb; Fri, 15 Apr 2022 19:01:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxJqCeJ6gqqKaI4EQQqlXY9PDoUL1wl0Zx2LRBvTUpHcRq4djGv6MLYR3ZGAD/ex2y5u9kf X-Received: by 2002:a17:903:2482:b0:158:9173:ddd2 with SMTP id p2-20020a170903248200b001589173ddd2mr1727230plw.22.1650074475600; Fri, 15 Apr 2022 19:01:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1650074475; cv=pass; d=google.com; s=arc-20160816; b=zB9PBPIopux9OOp69VLEM+FdDhnR73iLjanMxYAY/40gtGRtmFTRgMzTu1KtxypzLY N7B7p73PWJQdaR+gTefqyW8QDsPzLdcqOJg4AfStfD5q69mn1F0lXF08CG6SVRzu4Wgc Rsm6e50ySM+GxJ8V6cW0u7mHcj6G4PmXBgwnrI+QBeTquGFX9B+WD6W2OjrSzgAcOEcr uns11uzQ2IGMjiRcEChDRGqKAOUClNctRXkK2/i2J/LobQFEuyd3yE8I641Vb8TLQCmz gECiwifY7guRqzBlgMkGsOukflFaiv1awj83cE7kQtlRCTOu7SXnYcZyJNF3JhkpmOfi X4fg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=h+3Yp+2ll8sEAkTnMwI+chofBR8PwXQtteB9632ICt4=; b=BARJ53GzZfldjBHPhKd/HMKBDUfxtVCTiNKBOUB9MzBQroPq6nMNSeltqBE1oSyASU mTbtQI61nHRDn+DdL76JftjOxYT0XRbVH0CAk2p6fSwG1M11Q7tWFC5zq38UEEcnR5dA pfdGEvuH6EMMHAf8M0dmryCQk9bjzi0TqSx1g1ihzGItqbvcI9/k2RkszwFv9B8kT6QZ Zy3q713/5iF0w+enICHQHSGLQPf2VLPs7yr1KBSC0qdpRQv/xH7GN62Kf7BRaN5KpmP9 irEzm6P6RU+iLrQ+AuSlouo5Bp+TXa+xbvl9npvCEs0qFDTwjLkvlJIArQLW05tjpcRD rmDg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2021-07-09 header.b=bf1nBTiZ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="CApg6/iy"; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id nd3-20020a17090b4cc300b001ca6c627df7si2955812pjb.117.2022.04.15.19.01.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Apr 2022 19:01:15 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2021-07-09 header.b=bf1nBTiZ; dkim=pass header.i=@oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b="CApg6/iy"; arc=pass (i=1 spf=pass spfdomain=oracle.com dkim=pass dkdomain=oracle.com dmarc=pass fromdomain=oracle.com); spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 093A11C024A; Fri, 15 Apr 2022 18:21:00 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244877AbiDNRUH (ORCPT + 99 others); Thu, 14 Apr 2022 13:20:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345807AbiDNRTP (ORCPT ); Thu, 14 Apr 2022 13:19:15 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9D62630F; Thu, 14 Apr 2022 10:15:56 -0700 (PDT) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 23EFuT5p031505; Thu, 14 Apr 2022 17:15:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2021-07-09; bh=h+3Yp+2ll8sEAkTnMwI+chofBR8PwXQtteB9632ICt4=; b=bf1nBTiZVbqs6Ez8hOCBGni0X9FqEuDbTXou+waBw2vrjmAaNTUZM89W+U0SxEVb2xQu z60oAmh2m7TdVmF7B6tjgZiLge0SqtBSxVtxT3LgYixhnOqpI4fkcz9MgGTCYexY5RNJ sL/RGzQzVGGnDCv1WOvud7DIAMRgm8wlrKX+e/aWZlS7lkVDaSgw3sQGIgUMNuA7zZIk I6qlHK0jwShNhnOpCrmS/Gz5x9jHcet7gy6Rcr1fATAb4GGYv/+Ei5ku8+/cPuXIYsBx jX1pQ7W7RYMhBY/7o6SI/PRldlI1lTrNxxbghotgIzAPHBlITAy1ScsNC8YMKyXoXHk0 JQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com with ESMTP id 3fb1rsdhw3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 Apr 2022 17:15:45 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 23EHBmiN012522; Thu, 14 Apr 2022 17:15:45 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2175.outbound.protection.outlook.com [104.47.56.175]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3fb0k57g29-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 14 Apr 2022 17:15:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fqksKiqdm6G6gqYKXMIZEse/L7Gt1voxTbvlsmjbpyWMKSifJriRfkOwgkI5VQrTWW4kRWJ0c+yQbqD5iYed3qp0qbGIKaweJYnwWsxXcW/oMvhoR1DYSXpJanH4L+uGNIls+SojCQN0tOgdlSZ8rLgHlxB2K+B76JZKAivla2n4l39HBKEyAacRW409lsX+Kfd2KQY1Os3GIPHydbLhjkU5uK1/l44e03PK+7sRZI76HHAUZAlLLC/jfMfybmmrNaREx7+UOxaumchhrYrDBoy4fVilYSI2XfjwhcD7nbAdKPv+8NDg+tBi1dHt5q1+1mplWS6OkG8IviMoLWiSHQ== 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=h+3Yp+2ll8sEAkTnMwI+chofBR8PwXQtteB9632ICt4=; b=kbly4DrR24kJbmHszHt53WS+ivbckYOUHseWxplvSfbDHstUU2IA0bDngCtj/U0d0P28hkXEy7a8nTxzVFip+8v3/R7C7fM1MLSTVVPFDde2UMe+cON6O/gRTf0BJOhjwXxxqRbfP8lJTg4uNhHK6gn3kWKfIxP9tBK9aWEAraPX0Omx+f+t8SgYQK/NHxaz02USC4NK0Lr3fEPjIY8bd4vywykP6Q8E/o7mYbd9LZ/2J8A0xpEG6Um2HYuHXArTrGb3LQSmY5x6cwhOgPP6Sinbc+EVHM2uUQCHXlM8gi4EGvWURX3cf86veB5KmCIVwFqXaZMDe+QmxE5zK1LKfA== 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=h+3Yp+2ll8sEAkTnMwI+chofBR8PwXQtteB9632ICt4=; b=CApg6/iyoqvyYGcB0i7vBw/gdazJ/Yp0AJmlbIicoENlhACeSAeGAQhbDjel7byFxXGRm/2tBO75xjWvXgm0z/foB6Y7/E5JR1nvnU9lT/1US4FXwuDjmgmu45qBAk8fdFFvBCJztF0aJ1slqb0hmX68Seu39U1LEUuxvtGmcno= Received: from CH0PR10MB5113.namprd10.prod.outlook.com (2603:10b6:610:c9::8) by CY4PR1001MB2344.namprd10.prod.outlook.com (2603:10b6:910:44::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.29; Thu, 14 Apr 2022 17:15:42 +0000 Received: from CH0PR10MB5113.namprd10.prod.outlook.com ([fe80::a8c2:7a0b:5845:1675]) by CH0PR10MB5113.namprd10.prod.outlook.com ([fe80::a8c2:7a0b:5845:1675%8]) with mapi id 15.20.5144.030; Thu, 14 Apr 2022 17:15:42 +0000 From: Sidhartha Kumar To: shuah@kernel.org, akpm@linux-foundation.org Cc: Sidhartha Kumar , linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] selftest/vm: verify remap destination address in mremap_test Date: Thu, 14 Apr 2022 17:15:27 +0000 Message-Id: <20220414171529.62058-3-sidhartha.kumar@oracle.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20220414171529.62058-1-sidhartha.kumar@oracle.com> References: <20220414171529.62058-1-sidhartha.kumar@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SN4PR0401CA0007.namprd04.prod.outlook.com (2603:10b6:803:21::17) To CH0PR10MB5113.namprd10.prod.outlook.com (2603:10b6:610:c9::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ad12b10-ae26-46a6-0ccd-08da1e3a67d8 X-MS-TrafficTypeDiagnostic: CY4PR1001MB2344:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MCXWtGA4JFwZEbN1yIygN0GriIAA8YtFylOlEVWWJdlkuBMSY4Jh9drGoeyYjNkvvc9ceJPParsmFTu7PwPIs3bjqw8MqM9Gg1UHwmP8uUCgCsUhJnGV/y5kySGo4H1mUXlozXhveadGBM1jxqOuHr+epf7mVuHXzCReMbedZLBTH7+rqLn+P+5VUc40D6p6QaqiFTfTA78CNRWy40xiaQdwsfhcZI1j1PPwfJdAJZ1J5drOnd34YK7KjfFFbEkxSQjabUPyC0mvudYzF+tPCtxshq6OIMli68tRUQUqQp/AoR+H2dFN0PGfGACaza2kvr0mKxch+BF43ZPP/oaIQy7RAEJKCas8W3qzTzfir579udgfHzhYp4I1birxqmR1ScUr20VbkQj0cSol6PFXBI3UHpBhmZ/AGL59V1ZMc1fLvEboxdZGw2oz3Y4rtcrcT6kHBEHxSFI0uBsBSpVVztGx0HbLTA5DzYDpC3I/BiAi6q0sDIweTn1GL6hfq6wKc8vprp0o/WomIdxOFBMvERXLFLQJ4JY58tzHfQDmBQeykvJzzmdU8OVnTlKJmtv6nEdhUpfHSp8FIQwmFOYFIarqPSgz0U9gTuxPYJGGiqCAvh/XNuSZDYX0zVTIwWHdffZmyF8GOu4Ex/GGF7cp4IjKDvf9tJ+nwgYM58GXpJSg9PWGoxPVM9WErU/ra3sqQz4bvs8WmJnDfVvUZErGUg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR10MB5113.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(52116002)(4326008)(36756003)(186003)(6486002)(86362001)(508600001)(83380400001)(26005)(6666004)(1076003)(2616005)(6512007)(6506007)(66556008)(66476007)(66946007)(8676002)(44832011)(5660300002)(15650500001)(2906002)(8936002)(38350700002)(38100700002)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aVkCTqMhWt4QkIDcNkzUISWR6DjlNgaJgXXH1ebTw1vs8fX4IoBmF3xakAFw?= =?us-ascii?Q?jTJG2IsZtcmv+zLFCx55HYz577UgsxdQ2jtYlezgIutgD56Q+seJxkgNlJWk?= =?us-ascii?Q?oVk96fOG4BynRW5M1mGbKnekBXbnqw8zpGcei7iMgxXgtBBu+1j5Qy0WLTmi?= =?us-ascii?Q?sSwXj5C9lUpQ2HFOMJvk59aXDeZ+6Z9/xZYyX5yDCGKzMhCAuyjQizXFSNX/?= =?us-ascii?Q?EvViTQWb3yZ+uVzVwyFipvlb+dkf18bA3NEcC8wnMJPiF41pC6HilwpLgSr5?= =?us-ascii?Q?+bButpvBjn1xae6i8iIccGE0pkYUDrPbx+wFpqbOP/h8zW0DtBZLRyF/7b5O?= =?us-ascii?Q?ghpET3p3AltNV8oNYRXPbKJs/3RMG0g0eTX/yWPfR34w5rfiLdfInmukE8I7?= =?us-ascii?Q?Nci74u+M2Jsa4+3p8HGHI8Y0RLiurowa7t+fT+KeGea45dtaBUzp2QMk44hN?= =?us-ascii?Q?SsjprtdsKmcoUuizrrudxmWQ53ss4BIdK2xUoPI5uPjPKr2oUvzwjLOK8wOW?= =?us-ascii?Q?xKWFD39sEpqLmsViZzc7i2bIE0RbkaieszPwjG+06gck7Ueqhlq3Yhg2ID9G?= =?us-ascii?Q?9w4Nj8y5AXF3SIJZewEdNMwDeS2Fk+24HvjMQdQTh72ZKAnuMEh4/ddS9Mz6?= =?us-ascii?Q?wWz02WYw6yhSeKFm6zKrDAXWAdlc+926KNLurM4XZyCXiJEV5+OCMyvsljx9?= =?us-ascii?Q?3ZIcMqAaPz4NkZYH9ntAfm82liLmz/b+cEJWvNi+Fpkze0iKI+Erg7/Gn/HT?= =?us-ascii?Q?wM5CoLrpgtDNjG6+lgeM9fSIkVXxaekTcksvTKAQBrdbqc5gyKYLZAw43Q3y?= =?us-ascii?Q?2hZJfkaeHtu3GrG7Wkzu+XooCBxr5+aUXL4obi2T8pyy2QroezRoKfdxwKdX?= =?us-ascii?Q?Xbc4+B7F5WTHdyhBaOJ97uHe3LLOQhm6L+bqDzvGG727ecA8B30DsXjLn9qA?= =?us-ascii?Q?oB61v3h1f8xdC7k1CmE5Upo6c/x+rUn9W48vsgIKnaf0ybYr1pPbQUw7rCIZ?= =?us-ascii?Q?UCqVqqTq63B7zjMxoSjR1gLm+xdMdbdW4Zs8MyZc+SuF7fp/ye8LjtWmWjdO?= =?us-ascii?Q?t2KgqVGQkWgQqSvLSpHrL9WCoUmbIYHC010LbTUx0H6YzJUvkEOq599HUvoo?= =?us-ascii?Q?Lb8ZtHTloFKChfs5h5ZKKKfVfNwvc3mP59eTn2PYOK11lFvPKaBxEXvHaJ8D?= =?us-ascii?Q?ZI0DAbhQ6W/JqEtZQuOt2E482nm7GVXyIj6qQlAkFtRMEoFgL0okBV0FJVAp?= =?us-ascii?Q?AdbQuFXgaB2VqXb4mHEutsKO4No8wEk7D1A1zyiIXAlI6Q+RR7pd7clo/PbV?= =?us-ascii?Q?Jlanr6qsTXAkmui4yK3OkDk4rMutoKhFFlxsqX85krMBI1pyRZAuaZP6+ycN?= =?us-ascii?Q?J2TOEzdj0Z/56trmGWc7ch7V7PSXjEcmuhydvVmwKKxJQNH/KVO9qpzyhYqB?= =?us-ascii?Q?XkfOMEDxbGy7gVsOYBoDI1HrzQTuOAIKGbtbgEVlgHa67znicbUAbTvcO84l?= =?us-ascii?Q?ROtTw7jUAwzXFtHxoV6jJ9jjq6gElC5sz1nFlgSomwM3dYljux40d8KnXiQ9?= =?us-ascii?Q?cJIAJjU7/aKv9QECd8GgcZdnowHuh2StHOALXWSLjGRu/T5yd/0HorEwFT/y?= =?us-ascii?Q?VgqlPlIyrKT3yVxqshuGv9OSp1H0YP7bSoBv9MdS8EfvNuRanPpVApOXLB2d?= =?us-ascii?Q?lFINRENzwymoAZn+KEGb0KgWrJns/cqxoclf5ViiFx3TuKU0PR7APTM1nKSM?= =?us-ascii?Q?jS82WiG0w84v+GVpFQsXXYrtGMJGtlA=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ad12b10-ae26-46a6-0ccd-08da1e3a67d8 X-MS-Exchange-CrossTenant-AuthSource: CH0PR10MB5113.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2022 17:15:42.6900 (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: zJ9COhVnSdhAYplyZrzNq4m5Wr0m8bquTUF76A0Lri299pdTJ0jHtyu1PYD8T4tAmigvcTlgyHLxWVoUz3/ebRWN4GHeAmh9XbbDrVoAYqE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1001MB2344 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486,18.0.858 definitions=2022-04-14_04:2022-04-14,2022-04-14 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204140092 X-Proofpoint-ORIG-GUID: x5R3_Fugc65hwKds1ri1zvaYW1h0CZ_d X-Proofpoint-GUID: x5R3_Fugc65hwKds1ri1zvaYW1h0CZ_d X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Because mremap does not have a NOREPLACE flag, it can destroy existing mappings. This can cause a segfault if regions such as text are destroyed. Verify the requested mremap destination address does not overlap any existing mappings by using mmap's FIXED_NOREPLACE flag and checking for the EEXIST error code. Keep incrementing the destination address until a valid mapping is found or max address is reached. Signed-off-by: Sidhartha Kumar --- tools/testing/selftests/vm/mremap_test.c | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tools/testing/selftests/vm/mremap_test.c b/tools/testing/selftests/vm/mremap_test.c index 58600fee4b81..98e9cff34aa7 100644 --- a/tools/testing/selftests/vm/mremap_test.c +++ b/tools/testing/selftests/vm/mremap_test.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "../kselftest.h" @@ -65,6 +66,34 @@ enum { .expect_failure = should_fail \ } +/* + * Returns 0 if the requested remap region overlaps with an + * existing mapping (e.g text, stack) else returns 1. + */ +static int remap_region_valid(void *addr, unsigned long long size) +{ + void *remap_addr = NULL; + int ret = 1; + + if ((unsigned long long) addr > ULLONG_MAX - size) { + ksft_print_msg("Can't find a valid region to remap to\n"); + exit(KSFT_SKIP); + } + + /* Use MAP_FIXED_NOREPLACE flag to ensure region is not mapped */ + remap_addr = mmap(addr, size, PROT_READ | PROT_WRITE, + MAP_FIXED_NOREPLACE | MAP_ANONYMOUS | MAP_SHARED, + -1, 0); + if (remap_addr == MAP_FAILED) { + if (errno == EEXIST) + ret = 0; + } else { + munmap(remap_addr, size); + } + + return ret; +} + /* Returns mmap_min_addr sysctl */ static unsigned long long get_mmap_min_addr(void) { @@ -180,6 +209,13 @@ static long long remap_region(struct config c, unsigned int threshold_mb, if (!((unsigned long long) addr & c.dest_alignment)) addr = (void *) ((unsigned long long) addr | c.dest_alignment); + /* Don't destroy existing mappings unless expected to overlap */ + while (!remap_region_valid(addr, c.region_size)) { + if (c.overlapping) + break; + addr += c.src_alignment; + } + clock_gettime(CLOCK_MONOTONIC, &t_start); dest_addr = mremap(src_addr, c.region_size, c.region_size, MREMAP_MAYMOVE|MREMAP_FIXED, (char *) addr); -- 2.27.0