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 X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_DKIMWL_WL_MED,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C0B4C04AB6 for ; Fri, 31 May 2019 14:22:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3186B26A5D for ; Fri, 31 May 2019 14:22:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ZKOkIMzc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726800AbfEaOWB (ORCPT ); Fri, 31 May 2019 10:22:01 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:34123 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726716AbfEaOWA (ORCPT ); Fri, 31 May 2019 10:22:00 -0400 Received: by mail-pf1-f195.google.com with SMTP id c14so3904728pfi.1 for ; Fri, 31 May 2019 07:22:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=lqGZhr1OXDcqw01dRW7YMwNNKArDZmNdR/78N+BPrn4=; b=ZKOkIMzc1OQGbUNPHq03h99fyCedWbnebo6E2bMji4A+DRTaVEdXjsJpjrPcnu5SSA zIZPDWUgCW5bi+5Hm5xJN08EHp1zrtJRB8hJr+lkARmCPVryFs490LA/D4jT6SugJib6 WuyNVM4Q2N7HAjjpa7DOBEdYU4LyBiJDJK5zMqDY/W6JkYNX16roPrVOH81h+nxoiBDb 7B2l5NwJlc5O9XzC5yHflmTOv3KCBSLqmkKFOBx9Ekz6rnZxWiAE8V0PArN5B+OlAW0s TvC0lLDPHMJfSpKtEQaVcV+QmrjEmlTv3Oh20DkNgRQ4hUDHUKfXsDqAzpdAzgsjCOV+ IttQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=lqGZhr1OXDcqw01dRW7YMwNNKArDZmNdR/78N+BPrn4=; b=Pby0lpFqNSPKKqN2UuOGYeBsPNFK7Vd3Lq1A3StxwYXCpLenB8JElWkyd5he/C4J6u eVWx1GEIqxy8bePlYyHmIzF7DzBz6jCgfxm2wk8wuPp5ZVucazu4P5rlmnLgbYCKCBLI Yd+RhLDKfwseLcc0XaPMdB4E3hY7yB8wCj+VufN2y2EuJWEZKjhz5j0bCN/KjWOOccc3 4JE1d0ff/TLwSOgXfxBIUxtsHcaBVVm0ELcMetRg9V683HVlJrmJxfauCwWXs0uSl/8O rGlHCPZJZ1k4kUiW1S1J7Wdlvy+euWB8NaPd0vf/uz4V82JYbkCaRhkpZeGR0MKZkwND ZazQ== X-Gm-Message-State: APjAAAU2UsUBzGroNaWHV8hGegpQqbm2BH29ecnd2nj3TmpXBNBWPLBH s8vkP40jWxjrMC2wAb2Nfy1z8woSOf/KrGD7rRUkjHv8EeA= X-Google-Smtp-Source: APXvYqyJDYvC63I4W5Lhta3XMIDWbZrlVf994VbGlX5pPuRIANXUx7mxbvFt5+YOh/Wqr0oXVm0H7EASqzCT8eMwsG4= X-Received: by 2002:a65:64d9:: with SMTP id t25mr9532741pgv.130.1559312519598; Fri, 31 May 2019 07:21:59 -0700 (PDT) MIME-Version: 1.0 References: <20190522141612.GA28122@arrakis.emea.arm.com> In-Reply-To: <20190522141612.GA28122@arrakis.emea.arm.com> From: Andrey Konovalov Date: Fri, 31 May 2019 16:21:48 +0200 Message-ID: Subject: Re: [PATCH v15 17/17] selftests, arm64: add a selftest for passing tagged pointers to kernel To: Catalin Marinas , Vincenzo Frascino Cc: Linux ARM , Linux Memory Management List , LKML , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, "open list:KERNEL SELFTEST FRAMEWORK" , Will Deacon , Mark Rutland , Andrew Morton , Greg Kroah-Hartman , Kees Cook , Yishai Hadas , Felix Kuehling , Alexander Deucher , Christian Koenig , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Luc Van Oostenryck , Dave Martin , Kevin Brodsky , Szabolcs Nagy Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 22, 2019 at 4:16 PM Catalin Marinas wrote: > > On Mon, May 06, 2019 at 06:31:03PM +0200, Andrey Konovalov wrote: > > This patch is a part of a series that extends arm64 kernel ABI to allow to > > pass tagged user pointers (with the top byte set to something else other > > than 0x00) as syscall arguments. > > > > This patch adds a simple test, that calls the uname syscall with a > > tagged user pointer as an argument. Without the kernel accepting tagged > > user pointers the test fails with EFAULT. > > That's probably sufficient for a simple example. Something we could add > to Documentation maybe is a small library that can be LD_PRELOAD'ed so > that you can run a lot more tests like LTP. Should I add this into this series, or should this go into Vincenzo's patchset? > > We could add this to selftests but I think it's too glibc specific. > > --------------------8<------------------------------------ > #include > > #define TAG_SHIFT (56) > #define TAG_MASK (0xffUL << TAG_SHIFT) > > void *__libc_malloc(size_t size); > void __libc_free(void *ptr); > void *__libc_realloc(void *ptr, size_t size); > void *__libc_calloc(size_t nmemb, size_t size); > > static void *tag_ptr(void *ptr) > { > unsigned long tag = rand() & 0xff; > if (!ptr) > return ptr; > return (void *)((unsigned long)ptr | (tag << TAG_SHIFT)); > } > > static void *untag_ptr(void *ptr) > { > return (void *)((unsigned long)ptr & ~TAG_MASK); > } > > void *malloc(size_t size) > { > return tag_ptr(__libc_malloc(size)); > } > > void free(void *ptr) > { > __libc_free(untag_ptr(ptr)); > } > > void *realloc(void *ptr, size_t size) > { > return tag_ptr(__libc_realloc(untag_ptr(ptr), size)); > } > > void *calloc(size_t nmemb, size_t size) > { > return tag_ptr(__libc_calloc(nmemb, size)); > }