From patchwork Tue Apr 12 20:29:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Rasmussen X-Patchwork-Id: 12811238 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CAB8BC433F5 for ; Tue, 12 Apr 2022 20:29:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6503B6B0073; Tue, 12 Apr 2022 16:29:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5D8A06B007D; Tue, 12 Apr 2022 16:29:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 479C76B007E; Tue, 12 Apr 2022 16:29:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.28]) by kanga.kvack.org (Postfix) with ESMTP id 378326B0073 for ; Tue, 12 Apr 2022 16:29:53 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0569C24D2A for ; Tue, 12 Apr 2022 20:29:53 +0000 (UTC) X-FDA: 79349368266.13.59F1CB2 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) by imf24.hostedemail.com (Postfix) with ESMTP id 886CD180008 for ; Tue, 12 Apr 2022 20:29:52 +0000 (UTC) Received: by mail-pj1-f74.google.com with SMTP id r12-20020a17090a690c00b001cb9bce2284so3707817pjj.8 for ; Tue, 12 Apr 2022 13:29:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=u+9yLdrvqv+15A9PShNP0Bj2lgMYcE44VCQG0+LZtrY=; b=mwfr+1QL20PQIeOZQZw4zuZEGgBuBUOGgqdqpg6THGQZKaFw5Wj8PV8H59rdqaaBLU 96DEcj2/yCle2oJspe3XQ+wvE7SynQC2qq8T45bjBHdWr775iHRDb1Awf9JLNlMzGg0Z g9Vavh5XkBcZCDWPUCYqQaA2bJ40hvxQocKz/LgmqNRswWSq0TrGjsidj6Uh160Cxgg9 Br/LGeUfE2qBk04WfS9pWdcxkZ6ZfhQUGAQUPaDVZVTwx2AivA1G7qb2eWdfFOoTI0KO 79/zwiYoOluzurGB1K8giL4K789L/VwUjzCmIrbzk2s/dgPratqPJ30cmLHHGCauiOdw Ag0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=u+9yLdrvqv+15A9PShNP0Bj2lgMYcE44VCQG0+LZtrY=; b=iPfTzNZWssON7nfXuE4sFyxFd3l/AOnvRt1kuQJxy1mN7WFa6ytnVpgKQTnyzbsvZa K82vDkL48PCR7XyA+996s40M6kgqpXQUl3VlwLSGDkHMfXXkpBP5AuMv0S7AY7YYzlJW 2oqmP3MpIk8CaC8nQbbWNK9NVNdlobnGZzKoFQeUQALwXT6WsFf6fTf18gIJHRBbffg0 Jz1t/fyDfWn62pM6QtR9+wZArGXZWcqCNfuWsaCsUsRmUy7hRnzFhY+/SBc2o4YdU00y 6zUhu96TenYbNjuiVIp0tRW5ajIUF3jy0NLg4bEUUGq6DLywLPBSbZVAxaNv5+5UU29C Qj2w== X-Gm-Message-State: AOAM531ul83UPw5Wc/YrmkfkNz5w1Dulz744ToKgpH0ncTV+1XkDyCRH qe9QojFnUTP85GdMg4QwtE225iC6ANfNi2IfP6TA X-Google-Smtp-Source: ABdhPJzT2Zt45zo3Wf9Ef/5d1NiGtDnKycptXlg/R76ipboiOT8KRuG6nigv1WkYm1tB4Mt/wit/6RMj+xbJNsBmESHI X-Received: from ajr0.svl.corp.google.com ([2620:15c:2cd:203:8927:f9ed:8b14:ddae]) (user=axelrasmussen job=sendgmr) by 2002:a17:90b:3c47:b0:1cb:8121:dcc8 with SMTP id pm7-20020a17090b3c4700b001cb8121dcc8mr6997487pjb.35.1649795391430; Tue, 12 Apr 2022 13:29:51 -0700 (PDT) Date: Tue, 12 Apr 2022 13:29:42 -0700 In-Reply-To: <20220412202942.386981-1-axelrasmussen@google.com> Message-Id: <20220412202942.386981-2-axelrasmussen@google.com> Mime-Version: 1.0 References: <20220412202942.386981-1-axelrasmussen@google.com> X-Mailer: git-send-email 2.35.1.1178.g4f1659d476-goog Subject: [PATCH 2/2] userfaultfd: selftests: modify selftest to use /dev/userfaultfd From: Axel Rasmussen To: Alexander Viro , Andrew Morton , "Dmitry V . Levin" , Gleb Fotengauer-Malinovskiy , Mike Kravetz , Nadav Amit , Peter Xu , Shuah Khan Cc: Axel Rasmussen , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 886CD180008 X-Stat-Signature: job8em3ezsixke7n9nsbgegbiwk5rkf3 X-Rspam-User: Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=mwfr+1QL; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of 3P-FVYg0KCHIQnUbhQickiiUdWeeWbU.SecbYdkn-ccalQSa.ehW@flex--axelrasmussen.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=3P-FVYg0KCHIQnUbhQickiiUdWeeWbU.SecbYdkn-ccalQSa.ehW@flex--axelrasmussen.bounces.google.com X-HE-Tag: 1649795392-950038 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000005, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Prefer this new interface, but if using it fails for any reason just fall back to using userfaultfd(2) as before. Signed-off-by: Axel Rasmussen --- tools/testing/selftests/vm/userfaultfd.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/vm/userfaultfd.c b/tools/testing/selftests/vm/userfaultfd.c index 92a4516f8f0d..a50c430f036c 100644 --- a/tools/testing/selftests/vm/userfaultfd.c +++ b/tools/testing/selftests/vm/userfaultfd.c @@ -383,13 +383,32 @@ static void assert_expected_ioctls_present(uint64_t mode, uint64_t ioctls) } } +static void __userfaultfd_open_dev(void) +{ + int fd; + + uffd = -1; + fd = open("/dev/userfaultfd", O_RDWR | O_CLOEXEC); + if (fd < 0) + return; + + uffd = ioctl(fd, USERFAULTFD_IOC_NEW, + O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY); + close(fd); +} + static void userfaultfd_open(uint64_t *features) { struct uffdio_api uffdio_api; - uffd = syscall(__NR_userfaultfd, O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY); + __userfaultfd_open_dev(); + if (uffd < 0) { + printf("/dev/userfaultfd failed, fallback to userfaultfd(2)\n"); + uffd = syscall(__NR_userfaultfd, + O_CLOEXEC | O_NONBLOCK | UFFD_USER_MODE_ONLY); + } if (uffd < 0) - err("userfaultfd syscall not available in this kernel"); + err("userfaultfd syscall failed"); uffd_flags = fcntl(uffd, F_GETFD, NULL); uffdio_api.api = UFFD_API;