Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp3437634rwb; Mon, 7 Aug 2023 13:36:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFdAAX4LqDKMSWSZjnze+xTXHqdZsNTlwo8Cw6XJzQaxZ6iaH0XwgFLL1WyLKtdChxNrJl/ X-Received: by 2002:a17:906:5388:b0:99b:e243:9ecc with SMTP id g8-20020a170906538800b0099be2439eccmr9759367ejo.36.1691440590962; Mon, 07 Aug 2023 13:36:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691440590; cv=none; d=google.com; s=arc-20160816; b=Az/REhoJD7d4Nf/qGvB0XZoibDBj3PPmk6UbtSNT0P7MgNtQwR41cchxlGX86ND5p9 ME3HXhUJWQPjJIqCdDaK9415dlH0ejSjvN9WB8n3mZ70ZTfVjRB25IwKAvoxBYN2PJh7 6Bpi30DywvTz5v+uoPMI+jmQOx/pDZGT65NxJnU03G3P6HvCHIbZAPSZwsfAimi0Hqxm BR5mErKK1YpedyZVw+O25CoIcovg1AGR56yvsaNvZJ1cyRJqogh07Fu0mwzMUKcKqDI6 5aAz88BPQCCck7gQuW+6SllgW58EOZdescmwBPv/Aje0yDHMAnxNDst9qKeF1EqpDa6n c9yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:references :in-reply-to:subject:cc:to:dkim-signature:dkim-signature:from; bh=XE+xkxc7MqAeqi2WNOczKsEjs+HO24cEE9rzWwhJY/8=; fh=c/oG948lqqQaw1dgy42869EAUe64C4rL+pEYrVJKmmY=; b=JuSfBWMpeCa2aCC8hDI3HQN1caDJipS9nTfeup+bLSxnDKD7nt/VplupjqKeM/RsLv 9heiX/eMYY2TbVeC7KditLAk0lnGcd4rLlr9z+gwH6Z4Iubdazb3u10A5UOzmfyK5ccw Z8N6xWkEnTM4Fw/tASiQa4utA6X7yvCpVTqHW0skp+Gw4s9xu6nX4cYzv287QPfN5a/4 k4IrQ6eqTIX3F+bqeD7LjZfX/J2gBy6EXSec3gEfcb9LRz46Gd8wl+YUADaADA4DKNCu 6o0XkuuEScAASyHu7vy/cR9KtRaY8zpyH+gemF2TlN0sX+tAcciSvlARe5DyxZhNUHga a1SQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=gj3nH2fk; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gq21-20020a170906e25500b00982a5377650si5475905ejb.247.2023.08.07.13.36.06; Mon, 07 Aug 2023 13:36:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=gj3nH2fk; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230499AbjHGTGF (ORCPT + 99 others); Mon, 7 Aug 2023 15:06:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230397AbjHGTGD (ORCPT ); Mon, 7 Aug 2023 15:06:03 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D3D81980; Mon, 7 Aug 2023 12:06:00 -0700 (PDT) From: Thomas Gleixner DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1691435158; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=XE+xkxc7MqAeqi2WNOczKsEjs+HO24cEE9rzWwhJY/8=; b=gj3nH2fkJD6ThcHJcDddPqLTvYM1VNgj+38jw6QezNf5fAMN0NFjxgAHtzrQNntzafmhmc I2QsY2aQXRPaqMaHrb2M0hq9YH/yPkXNJM0RqFzCUYNAHIet4/d7J68eUgFzomIbaAxK/S vlv1d/K4ltnEhP4JF7vzKbEeWWCpxFqravmbbnDqCL/KwcGk9Kc69duc8x5F+2Xul5Cp4u hbOOM2lCEjvMTAIz95+yAOoPgD3U/Vc99ufeWbGroyogSsqgRWwaxoc+gMSMbuc6gEhfUT gmFRHvEgsTE1/f5vzO+8wBfbnwL7lkTYHydFZ4KsTMamtwVNykfdOrOTlqk1Kw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1691435158; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=XE+xkxc7MqAeqi2WNOczKsEjs+HO24cEE9rzWwhJY/8=; b=cg24wm8ZuaKLMq6RUWNishxoPbqAtoBygzwGgzFZhlfN1ARCNFRh+/OhvpXAx2aTohFIlT /gDANCgZO6ir/PBg== To: Peter Zijlstra , 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, Geert Uytterhoeven Subject: Re: [PATCH v2 09/14] futex: Add sys_futex_requeue() In-Reply-To: <20230807123323.366498604@infradead.org> References: <20230807121843.710612856@infradead.org> <20230807123323.366498604@infradead.org> Date: Mon, 07 Aug 2023 21:05:58 +0200 Message-ID: <87il9qu0yx.ffs@tglx> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 On Mon, Aug 07 2023 at 14:18, Peter Zijlstra wrote: > Finish of the 'simple' futex2 syscall group by adding s/of/off/ > sys_futex_requeue(). Unlike sys_futex_{wait,wake}() its arguments are > too numerous to fit into a regular syscall. As such, use struct > futex_waitv to pass the 'source' and 'destination' futexes to the > syscall. ... > +/* > + * sys_futex_requeue - Requeue a waiter from one futex to another > + * @waiters: array describing the source and destination futex > + * @flags: unused > + * @nr_wake: number of futexes to wake > + * @nr_requeue: number of futexes to requeue Tabular format please > + * > + * Identical to the traditional FUTEX_CMP_REQUEUE op, except it is part of the > + * futex2 family of calls. > + */ > + > +SYSCALL_DEFINE4(futex_requeue, > + struct futex_waitv __user *, waiters, > + unsigned int, flags, > + int, nr_wake, > + int, nr_requeue) > +{ > + struct futex_vector futexes[2]; > + u32 cmpval; > + int ret; > + > + if (flags) > + return -EINVAL; > + > + if (!waiters) > + return -EINVAL; > + > + ret = futex_parse_waitv(futexes, waiters, 2); > + if (ret) > + return ret; > + > + cmpval = futexes[0].w.val; > + > + return futex_requeue(u64_to_user_ptr(futexes[0].w.uaddr), futexes[0].w.flags, > + u64_to_user_ptr(futexes[1].w.uaddr), futexes[1].w.flags, > + nr_wake, nr_requeue, &cmpval, 0); > +} Reviewed-by: Thomas Gleixner