From patchwork Mon Aug 7 12:18:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Zijlstra X-Patchwork-Id: 13344171 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 2446CC001B0 for ; Mon, 7 Aug 2023 12:55:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 935D16B0072; Mon, 7 Aug 2023 08:55:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 90D5F8D0003; Mon, 7 Aug 2023 08:55:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7FCC78D0002; Mon, 7 Aug 2023 08:55:39 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7302C6B0072 for ; Mon, 7 Aug 2023 08:55:39 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 45D611608E5 for ; Mon, 7 Aug 2023 12:55:39 +0000 (UTC) X-FDA: 81097305198.21.44753E3 Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf23.hostedemail.com (Postfix) with ESMTP id 18130140012 for ; Mon, 7 Aug 2023 12:55:36 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=Y0Ic2ASP; spf=none (imf23.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691412937; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:references:dkim-signature; bh=VeisDNjC4AzLF+2mqHFPpkzGGrK09hiTJOlUvJPWkc0=; b=kxpn0jk7JHVeIWxgqt0g7ourdtbmiPinl9Iy64TFviCaIdeepjJrBkRiDCHHO3VFDz7yd1 vfPfhL8omrDF6rmB/wY2iV7RS+38XIh90BNJ5x5bFrCIDvuVIvTvZFjqxZ9hHjUlC7NV/W 6Nh2TGBqCf2sF8mqJ/RvrIjKA+N5u68= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691412937; a=rsa-sha256; cv=none; b=2uH0Bi+TzKmzUHP/1I8waumdAGXTQLwOZQgJFseA4zAZ9Jpw9v6ML2H1x9DPGdFut6t6hG 5mDb5GuSrY6MwGnyrFNJUt+TXIkMg719aZ6ATJud9PVyilgtqVuUK1p00lxqqgb9uDKMWW J7y88Aks/NB1NPMqzytkOvUNb+4siOs= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=Y0Ic2ASP; spf=none (imf23.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Type:MIME-Version:References: Subject:Cc:To:From:Date:Message-ID:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:In-Reply-To; bh=VeisDNjC4AzLF+2mqHFPpkzGGrK09hiTJOlUvJPWkc0=; b=Y0Ic2ASPfM4zwCf8njfDLQ9TfI OuHwsWViCbzS/XDUIJxYEuz+6570rMjB76ialdlDvBGnoZ5f0lGB/AZPHEL1zLVvE+0SXP3E9NKXG aChDsIyEWqNqEjGtk0KBEbmdyoBkO60j1QC7lLf0GPh1j3ArPWtOzZPV1lbRjDAWphs19H93MFN/Y TuDXZNeMFZiuB7FXopYB4UqHciRVwN4uVfSTNPU0z/3z4PBBCn6Q/8fMMasBpNmDC+gK3mHnZENIx 4WJRUxHLhoH2oxp5n9XSV6JwbcpNwv/1h/idKQawLI7xtQnn4TDuz8SQ4B7D5AQpkC0GsM4dn+LC8 mUPicgtA==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qSzTk-003oSe-1T; Mon, 07 Aug 2023 12:36:56 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id D56643006F1; Mon, 7 Aug 2023 14:36:54 +0200 (CEST) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 0) id 902A920236021; Mon, 7 Aug 2023 14:36:54 +0200 (CEST) Message-ID: <20230807123322.883413972@infradead.org> User-Agent: quilt/0.66 Date: Mon, 07 Aug 2023 14:18:45 +0200 From: Peter Zijlstra To: tglx@linutronix.de, axboe@kernel.dk Cc: linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@redhat.com, dvhart@infradead.org, dave@stgolabs.net, andrealmeid@igalia.com, Andrew Morton , urezki@gmail.com, hch@infradead.org, lstoakes@gmail.com, Arnd Bergmann , linux-api@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, malteskarupke@web.de Subject: [PATCH v2 02/14] futex: Extend the FUTEX2 flags References: <20230807121843.710612856@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 18130140012 X-Rspam-User: X-Stat-Signature: kk6amdos1psg1bcu13xh6yqngecig4o4 X-Rspamd-Server: rspam03 X-HE-Tag: 1691412936-588943 X-HE-Meta: U2FsdGVkX1+Kp1DnwCJilaNsYbKQ9CJWI3vfpjcdcQdTuObdG6ZccaSgMbkczjcCHGPv6YOaeDhuc8jtHe3B9ghoIzLCdWCleIGl+YsOjni/VteNDIz+CGcxYPcIAQnR5YcZtVvMimdoRcRFaqy8+R/om2NiL+s5aFRj7zDCis7ct4p+/pGhCV9mU6xzwcnoklhbLYMtG9VXDcumWWZSQf0eunJZ++YUJuMdhd871OzJaulgblC0hgHvS0bCi0R+EIaUl4GZXDkMRL/5O8BOeJDN79nyoEt518kJ0wcHErORAhrArZbr07Cj9yn+KVVdXNPSl95dLMEqpNddcBhxVcxd/bEQu28v4GGGEcCiVLdeQVKA2a7FPj6VXvKWXrz5gmd383hBI3HALg2vco9Qy2F+RsX/yHOpTiT8FU2aUM+lDup24allSQr8Q/cs23ymvEwRPmdmoOVh4YczeLJy1TfainVMkbdlHptDVDDZkb0v6rK/VbzRpqXau/tJybFRwELbGE8FXfEkNryWCf/f64/dto6r0/NQ1l5DiCv3paycRjx6wRmzOyskE/HZYlUyet3tlniWf/5pVvyr2/773r2+NQfh42KF4VeNgyoxdeZ1R0ioVCplDXMu9jcp/9QuSxepomT/B8obnpLwvw9UFvj1dJiFOMCFken8Uxm4gNhZ07vCVN1opLervBuGMuTS4v0erlCe/MKaJ2LDv3qNDqb3oYd5m6nX74T75Qi8uFEmjkYidE6C+Cy3VxO/YEpomOYvj8oZBx4rigu2mG5kR5NUVCtW945h2Jl3dNMWhVseXqaf1i4e7YXi888Ek0dIL5MIMJWPE3Xp9Roa8ldfBT3DUyQxy9kAVpO5rEHOjsL76AaCvUX5RLZKWYsAh1rxM3LlkO1OJ9/Xb9MiOOkKyEBCmidX5GGrDevN50ypUWDolB5uyaX1Ge6TSCwfZXPuIrMLPlKjwbBS3KgNZx1 8R3kmRaV QT/X33aONHY99UEBurdeCgf2HId+MGF/kt44cf1C6TnhkXydlH5YJbO2/BHM4ySgGKjNpKxqoapmgGW30TkYLtwMSx8UoaBexl4ClosVWEpva8c6COOuvYZ7pYyT51l9z4v0Ohc5vcCJgA3GArJKa9ikvYcYsKZuZf/XupxrS5icAoGMoIVFJPpmtvS9pXgu6IiNjOJOAv/mS5fomkxp1qjGpiOx3mJMAcfrgnTgj/aTpxjU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Add the definition for the missing but always intended extra sizes, and add a NUMA flag for the planned numa extention. Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Thomas Gleixner Reviewed-by: André Almeida --- include/uapi/linux/futex.h | 21 ++++++++++++++++++--- kernel/futex/syscalls.c | 9 +++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) --- a/include/uapi/linux/futex.h +++ b/include/uapi/linux/futex.h @@ -45,17 +45,32 @@ /* * Flags for futex2 syscalls. + * + * NOTE: these are not pure flags, they can also be seen as: + * + * union { + * u32 flags; + * struct { + * u32 size : 2, + * numa : 1, + * : 4, + * private : 1; + * }; + * }; */ - /* 0x00 */ - /* 0x01 */ +#define FUTEX2_SIZE_U8 0x00 +#define FUTEX2_SIZE_U16 0x01 #define FUTEX2_SIZE_U32 0x02 - /* 0x04 */ +#define FUTEX2_SIZE_U64 0x03 +#define FUTEX2_NUMA 0x04 /* 0x08 */ /* 0x10 */ /* 0x20 */ /* 0x40 */ #define FUTEX2_PRIVATE FUTEX_PRIVATE_FLAG +#define FUTEX2_SIZE_MASK 0x03 + /* do not use */ #define FUTEX_32 FUTEX2_SIZE_U32 /* historical accident :-( */ --- a/kernel/futex/syscalls.c +++ b/kernel/futex/syscalls.c @@ -183,7 +183,7 @@ SYSCALL_DEFINE6(futex, u32 __user *, uad return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3); } -#define FUTEX2_VALID_MASK (FUTEX2_SIZE_U32 | FUTEX2_PRIVATE) +#define FUTEX2_VALID_MASK (FUTEX2_SIZE_MASK | FUTEX2_PRIVATE) /** * futex_parse_waitv - Parse a waitv array from userspace @@ -207,7 +207,12 @@ static int futex_parse_waitv(struct fute if ((aux.flags & ~FUTEX2_VALID_MASK) || aux.__reserved) return -EINVAL; - if (!(aux.flags & FUTEX2_SIZE_U32)) + if (!IS_ENABLED(CONFIG_64BIT) || in_compat_syscall()) { + if ((aux.flags & FUTEX2_SIZE_MASK) == FUTEX2_SIZE_U64) + return -EINVAL; + } + + if ((aux.flags & FUTEX2_SIZE_MASK) != FUTEX2_SIZE_U32) return -EINVAL; futexv[i].w.flags = aux.flags;