From patchwork Thu Sep 21 10:45:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Zijlstra X-Patchwork-Id: 13393846 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 D1370E70718 for ; Thu, 21 Sep 2023 11:01:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 514F96B01FE; Thu, 21 Sep 2023 07:01:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 47DEF6B0203; Thu, 21 Sep 2023 07:01:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0F73B6B01B1; Thu, 21 Sep 2023 07:01:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id D82436B01FE for ; Thu, 21 Sep 2023 07:00:59 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B3C201608C8 for ; Thu, 21 Sep 2023 11:00:59 +0000 (UTC) X-FDA: 81260312238.28.0D16F8A Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf11.hostedemail.com (Postfix) with ESMTP id EE84540004 for ; Thu, 21 Sep 2023 11:00:57 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=p5NRryUx; dmarc=none; spf=none (imf11.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695294058; 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=Leni2jABpH8gFx8eoWrGxi74yq+TZFYWjTk4xa5IXKs=; b=HZHZlqnbr9mebGi3Z8SI3bpFClTjy6lUR4DTgdnE0Z4x64jzhR7jbbPt4yJk7ATuilGOVy TZ9Z1uMr8y63o0irfk3m6WqNEXYcO2EkW7CkQDfh4c3vC1NarhVFYghU0atA6J3CsU9sv/ OOViIY4gYxVhF8q7dBsZQIAHkH0k+Xo= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=p5NRryUx; dmarc=none; spf=none (imf11.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=peterz@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695294058; a=rsa-sha256; cv=none; b=Ep/pFlx9+oU4EwnpkQcyVV83na3qCIuV3TSUtmRHUws3okCMKqwLni/ebVbd9OCMDq3zWP FdR9gWZGSKubUQ2JG7RF2mZ1NlcHaxi6F2cH/dPYW5Iu2+fScz6Jasb4lMORWtKibFU3HG DblgtxOxq6eE7YNAwnwFKrretCHNZQk= 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=Leni2jABpH8gFx8eoWrGxi74yq+TZFYWjTk4xa5IXKs=; b=p5NRryUxf/3ipjwh/+cFipr1tl Q0Eo1yrSCNeHQMxsgC1bVKRP9Tch3H1OKovd6RvaA+/24jMJpIzOmIjnA5asCBpapCTOO9s4c8zdB 0fpQXbtk3xm+spvtebHvCBwwEVso+UsVeLZYG14WZaThXCEwK7DIC1D6F+dEBJzl5OtLLJn2KgPyj SQBTWuSMfTPK6DOl6KeDYyoV6Id5gQZQ3I4ttIBzMWJUBOuBPzCiILjfj3cK2tlC+tNlbKV79rTqa 04lE917lCOEvORfQUZoFPA3YkCvHjkIcbY2+RgsD793YrtbrPlesBVvOkEZ1n1LPQNtRIxYrowm2E E1AOpBgA==; 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 1qjHQJ-00FJvi-0r; Thu, 21 Sep 2023 11:00:45 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 0) id DB846300348; Thu, 21 Sep 2023 13:00:42 +0200 (CEST) Message-Id: <20230921105247.617057368@noisy.programming.kicks-ass.net> User-Agent: quilt/0.65 Date: Thu, 21 Sep 2023 12:45:07 +0200 From: peterz@infradead.org 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 v3 02/15] futex: Extend the FUTEX2 flags References: <20230921104505.717750284@noisy.programming.kicks-ass.net> MIME-Version: 1.0 Content-Disposition: inline; filename=peterz-futex2-flags-2.patch X-Rspamd-Queue-Id: EE84540004 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: puf1y876uon6wsj11n6oi1ub9i49x1pa X-HE-Tag: 1695294057-208799 X-HE-Meta: U2FsdGVkX19ftIMWK7Am/CJo+gR9U9tWe56ZdeuLGbzIinZnK2uuPEMdvJR60vPkol4qfWfAg0pS0PAJK21PKUxGXSZrO/mPfj5vbMrRDqRCGtuBt/a+gnhnyHT9nXfbnz/Zwwqy5YJ7XDLBVNR0pPAqs9fsmREB5xICPSlSB6QE2ousRBgmibVvG5DP4fbsHoMEh7rwh5cNbP43AF2Ol+WkqzSxb0PxEAH40X3x53S/kdLPNdMce3VAS/A/PQJS+q7XsRtnkkj6uPJ6wcq2AWS6VTxDFqgRfvq+7PJILEmfWVA/b1w7RJ2mnEw3KU+WnhUqYyr2DuzS/Qq2VhYP8UxXbbp+ZcJTLMUwBCgUgO1LSMpOcpcg7FRrw4C3Faz4qdb2ZpRJAsfrQDRF/jc9Amb5WsUy1z0nNGBJdKvgav14c6dACr7gWiaLOj9qewImyGivMy56MxaILnCUOuZApipCT/yf4vMQbGLHPmX2BZErXlBmqlGzmYCOKpciD9HpnwbN/V6xgqUqVvBORDi3ZBMexzTlmALVkeqk5FAct1Nto/i6L09rxKkYRWOvaJZ964oeTMkAASWkDPOaUtyfyTAo3Gh+2T5kgt7hA0bIUq7vBznGGvTVren1w7XSVrY5JBBgnGpaNLLTyU/K4Os2rcF5N8pxvEKyeuZyd0EOWBE3WWVPYwDeznP3ywZTU+dtiN7V4bsSbCGAGOoxuVAJ1ps12g1R8iNgtWXi4J1RtQxeEadTCbiPS6Jyv3b3txJ6JdjuBA+EtssH6k98OyVn0gS0eM9Fy5Eo/YCuQnjLctNaVfL9WCiYouRExB80oQlnGWovFBN/A7SP6+TsclWUDIvrkVAf4NWSUWsl/OKeQyjzBCl5xN8R0lnBzsaKaWIUj8h0pGsgq6WvPMTKpFTPGXcFuPOnKmt5Y1hMY23dDvIc1gPCoqx/+Zx8RXdh83T/lCHpODCsLQEAutdZDSt dTvNF+ZB MW4/EL8FmkfwcLwg9uYw6Djq9ZVsXWMFQSTXqQreoIKTo25A6kvEg8CQdrW7dx+ffD+luEqgWbw5RCEMZGDZUiZlj7hgwS455TGhPHM6n1D3RmPL0y0fEOjjmb1zG0+R7C8JVh6WcYojbUtcu4rgvVwBvvhtivPKcibX4MFs3/S/vkOJKhYqUneO46H4WZr4YkJGULEc6lBjckgMa9sTFqADOGmNUVdafMHHi1XLCNm9GPGBIeTTK5lrgJjjYqNa1F3fIbgWdY8zGVZyXF7kbZnGpJB0rnhhQQUC2wAcshrYs8JQ= 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(-) Index: linux-2.6/include/uapi/linux/futex.h =================================================================== --- linux-2.6.orig/include/uapi/linux/futex.h +++ linux-2.6/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 :-( */ Index: linux-2.6/kernel/futex/syscalls.c =================================================================== --- linux-2.6.orig/kernel/futex/syscalls.c +++ linux-2.6/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;