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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9C9DC05027 for ; Sun, 12 Feb 2023 06:59:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0712D6B0073; Sun, 12 Feb 2023 01:59:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 021246B0074; Sun, 12 Feb 2023 01:59:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2A126B0075; Sun, 12 Feb 2023 01:59:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D05EB6B0073 for ; Sun, 12 Feb 2023 01:59:03 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 890DFA0B43 for ; Sun, 12 Feb 2023 06:59:03 +0000 (UTC) X-FDA: 80457737766.28.E23A19F Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) by imf21.hostedemail.com (Postfix) with ESMTP id D612E1C0004 for ; Sun, 12 Feb 2023 06:59:01 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Osb4Wjji; spf=pass (imf21.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.222.171 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676185141; 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:in-reply-to:references:references:dkim-signature; bh=fmnXJIRXHunw5EnXJ7hxJau91zEYpdnVcaf3JkiMjTc=; b=XiV7WxbNTjJiu3NxfohH/xU9Hfj0gbseJmgOHaBlkDHM3/Uv4YHTo5o5Z77NQUw7C0loJb Ep9dCEewzUbjFEFjJgpup5sHf7VXAXyILrz3vPm0C5RN8TAnI/GP6/FxZ0LowagJ7Ti7ln DoL9BLmQgs33p8hpBWRiF8UavqR8cmE= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Osb4Wjji; spf=pass (imf21.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.222.171 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676185141; a=rsa-sha256; cv=none; b=ZsvrO/JFJoSHRUXfri3TkhGgNYs4jE8jooD9ya8jkc8UpiKUk19tWcFJn00yLnazSByDqJ p2D+FRoSrLxQ6fBtU9pbt2rFiQdlKP1zogYf7kInghpFZAVYn+z8owoO+QS1hjulQNWNd8 o8Xo8PO+Q/V7a1/W8dIXYBpuInK46EE= Received: by mail-qk1-f171.google.com with SMTP id o4so3664445qkk.8 for ; Sat, 11 Feb 2023 22:59:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fmnXJIRXHunw5EnXJ7hxJau91zEYpdnVcaf3JkiMjTc=; b=Osb4WjjiJBoni0lxL6RNt4fabaBHkJgaTwCXILZ53MGNHQgRqED3TTVajff/jasZru XD0BFWJWFnISdQVjGxx+tv8hIMA3twpQMuIa4yxB5ZZpixh9Yz+qPCuDwXEqF0c8XwHF ZJRzozdQa+KuFRHpho9a4J9oHQbRNdg2i5C9XQpBKJQxF20gwf1LXGEl+XCTNrChDD6z Hl1FO/YK081+pNbwh0qyBniX43ylYUKDgxe0Nk4jnnIJjMddThD5lMiFPy6WOVgR4rsA z6ihgAw2thBz2Q39Kndnp+6u4SZPyL2/dwG7ZhsTLp4KWe1k4ij8WyDC6OvUNPIME8+z qoWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fmnXJIRXHunw5EnXJ7hxJau91zEYpdnVcaf3JkiMjTc=; b=z1vdbYEKnZuW6exEzBPhNFPiokSq+Dz4tAebdwr3ZLyJvw9CmMZA4R7OZvgpjZbXxG J6iOJiQUIrifk6YSZ98meqS8mKUHCBKNvP5pCIE6L/iB+YPMHUaP+g0962vE4mnYxSla JAE533GRPnVvC83w7BtkJrN2wykAI2n0tm4a1tU1H7wcrEmPflKEN7ql9supvjLKPri2 gqWY2UYHJWERugahCbl8q0agQuNH9kmg4+ESN7HEGwQguqrLCHLRUujk+7SQ1JrNghIo MAB1JmdrXKnC3KG2ZjrUG1Afz9/Db4uLK5ktzNbaDeq0OqiO5zquIdEZfk1espZg0QQI 4+8w== X-Gm-Message-State: AO0yUKU1HL1KnCAe2kzm5jlokdPaUphGD2rvSz5/Eq82Hwv16lbHi3fA P/WtnR8NpQFqNB11d32PrnXZ99UxN9ElctTafgg= X-Google-Smtp-Source: AK7set+6l24HEYLMeNIh8jrj9NLi3ijOJrGyOfDpl/Y40A7Gv58t71Q9SGCcZCJESwaOqjLlSdbcFVXCCZsVznSloU0= X-Received: by 2002:a37:9984:0:b0:724:165:d74e with SMTP id b126-20020a379984000000b007240165d74emr1094473qke.357.1676185140939; Sat, 11 Feb 2023 22:59:00 -0800 (PST) MIME-Version: 1.0 References: <20230203190413.2559707-1-nphamcs@gmail.com> <20230203190413.2559707-3-nphamcs@gmail.com> <834254e6-a9c2-440c-9c67-fc5fa5ca43bc@app.fastmail.com> In-Reply-To: <834254e6-a9c2-440c-9c67-fc5fa5ca43bc@app.fastmail.com> From: Nhat Pham Date: Sat, 11 Feb 2023 22:58:50 -0800 Message-ID: Subject: Re: [PATCH v9 2/3] cachestat: implement cachestat syscall To: Arnd Bergmann Cc: Andrew Morton , Johannes Weiner , Matthew Wilcox , bfoster@redhat.com, kernel-team@meta.com, linux-api@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: multipart/alternative; boundary="000000000000e7509605f47b43f2" X-Rspamd-Queue-Id: D612E1C0004 X-Stat-Signature: fa5gm7hdai98hw388pxxs334kaoknz8y X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1676185141-988749 X-HE-Meta: U2FsdGVkX1/S59i2pAWqKwnj5MT9Vd0ewtYvpHrs0jcHU66eeYRzLAIkBsVFi/3bpU9ua0jW0Sl0xK0n7wZeGIDIRGnm3hEtQCjgii58Td+SNjGnDrmBes6b5kS0pDw18GlLA/aIvAAwp47z6z5yVw7MkWCOIcURjffOJfT6EQAZp58uHg44csjkHg1PG8AQe2S26Qlm43pflQAYnKUP1cANFsqv0EX3uyD2mxY0iUG8UmIIYu65PHRO8zWxAEGKEoDpm0uTqJQ8Uv4FWmSc266xBObKw2aokNhsC3vazbP9mycWi3w6efr+cdzhPWviz61gCDd4ZqVOHXZKig9Pp7HchTFM6BFnSLXM2fy1XhAF7UypevYrD3sFL7IFiLA9QHeWvqbnEDqUlHWYK3GvkL24mzAUfhGLLtFlFT6RKxCfAfz43DBz+nzWhn3kT/uy29/5/yGS6NeJoXFaMJjuIzm5U41D4ADhNILaZcf7nBuYFoGS8HOTiEVz20da/Z8wYS257G910yuJ4wYI+/4DbkLo8eJ3InmtAKIfLIFLhnS36spU262+AXfIANYagaqZ2CkGw7CZAqFQnodEcPeJd1Vc2igW5zRafIeZUpfWPDuqOuOxcrkyLTsvZfblWlyWLqlkndpF6Gw8ZpGXpUDVzCoACUkmTj4xoXQQAYm8h64hRLTWHr5Hjt5kdKHuvsxeB8z/prbxYw7GB7syhH2d3qtBxuVpvJ9o0w/QS1BjYOWl9EyUmXPBXOcesTMVyMIyvFtzeVlobzSdROyDIdmkhnlA41AxJGLtVSbULrvhDhDqWsB33im/gRO2wwC4ObY8eHlOou0gNDF6cDkaJlea/xpxS/RdAa7VlG+GoG50Iw0PQkMo+vAPxDaFnxcs2KxR79RcFHubsSCtgj2q1enVDRYdytU40tmIemr0Ycsax3U3aSiU3qG6UeT46hmLbQIjmJTio46Xsp5HdbegBpg 8B9MFwUJ J5rhJWPsWhEeSkqtwK++odLZ0W++W1a4arzIOXJTatgrXLJCzg1iZmmWDOiB3I2hJOlb9K2A2oRz2qqkopcWVcgPIUGc+gue+y0sHlWpkfREmtJa+SztmQgTnTkn7TDb/n53x8nw8EY7gyOIfeg4v90VUxKcOlsi8sSUFmVPW4yyc37VnXI6VCSwpFk79h5bHMHaeiPgfj/Tq3prWGuqDPOpmcX7GBjpfnuHS4+vBdobsWAEZAhZYM+hHWY1Mi6QVQCzsknjl4SDJr5MnM9qriC0v4f9sHuKXTB2MgGDbEbPwQjYiKpykNwXlU6r/OmEGh52FzkffJGAwwoLM5dnl0Ji+4jGciS3v2eVu/iWzgjPpdrETlFgV41xkScmniNRW61l5TrpIbMX6M32h9AF0jc0cF1znFiImZmv3MtqPP3xj30v+K8xM4YC57eH3xSNBOfi1tvsg7dmiqnTS8b9OfxEjHRCyL6dhH49v 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: --000000000000e7509605f47b43f2 Content-Type: text/plain; charset="UTF-8" On Sun, Feb 5, 2023 at 4:56 PM Arnd Bergmann wrote: > On Fri, Feb 3, 2023, at 20:04, Nhat Pham wrote: > > > +SYSCALL_DEFINE5(cachestat, unsigned int, fd, loff_t, off, size_t, len, > > + struct cachestat __user *, cstat, unsigned int, flags) > > +{ > > + return ksys_cachestat(fd, off, len, cstat, flags); > > +} > > + > > +#ifdef CONFIG_COMPAT > > +COMPAT_SYSCALL_DEFINE6(cachestat, unsigned int, fd, > > compat_arg_u64_dual(off), > > + size_t, len, struct cachestat __user *, cstat, unsigned > int, flags) > > +{ > > + return ksys_cachestat(fd, compat_arg_u64_glue(off), len, cstat, > > flags); > > +} > > This still looks wrong to me, as this compat definition does not match > the native variant on architectures that require 64-bit arguments to > be passed in aligned register pairs, such as arm, mips or ppc, but > not x86, s390 or riscv. Oh I see - thanks for pointing that out! And the last bit means this is a non-issue for x86, s390 or riscv right? And iirc from the last thread, this is fixable via a simple reordering of the args in order to properly align the 64-bit arguments, for e.g: SYSCALL_DEFINE5(cachestat, loff_t, off, unsigned int, fd, size_t, len, struct cachestat __user *, cstat, unsigned int, flags) ... COMPAT_SYSCALL_DEFINE6(cachestat, compat_arg_u64_dual(off), unsigned int, fd, size_t, len, struct cachestat __user *, cstat, unsigned int, flags) It looks a bit odd to me that fd is not the first argument, but perhaps this is an acceptable sacrifice to avoid unused arg and keep the flags... Let me know what you think about this! > > Arnd > --000000000000e7509605f47b43f2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Sun, Feb 5, 2023 at 4:56 PM Arnd Bergmann= <arnd@arndb.de&g= t; wrote:
On Fri, Feb 3, 2023, at 20:04, Nhat Pha= m wrote:

> +SYSCALL_DEFINE5(cachestat, unsigned int, fd, loff_t, off, size_t, len= ,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0struct cachestat __us= er *, cstat, unsigned int, flags)
> +{
> +=C2=A0 =C2=A0 =C2=A0return ksys_cachestat(fd, off, len, cstat, flags)= ;
> +}
> +
> +#ifdef CONFIG_COMPAT
> +COMPAT_SYSCALL_DEFINE6(cachestat, unsigned int, fd,
> compat_arg_u64_dual(off),
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0size_t, len, struct c= achestat __user *, cstat, unsigned int, flags)
> +{
> +=C2=A0 =C2=A0 =C2=A0return ksys_cachestat(fd, compat_arg_u64_glue(off= ), len, cstat,
> flags);
> +}

This still looks wrong to me, as this compat definition does not match
the native variant on architectures that require 64-bit arguments to
be passed in aligned register pairs, such as arm, mips or ppc, but
not x86, s390 or riscv.

Oh I see - thanks for pointing that out! And the last bit means this=
is a non-issue for=C2=A0x86, s390 or riscv ri= ght?=C2=A0

And ii= rc from the last thread, this is fixable via a simple reordering
of the args in order to properly align=C2=A0the 64-bit argumen= ts, for e.g:

SYSCALL_DEFINE5(cachesta= t, loff_t, off, unsigned int, fd, size_t, len,
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 struct cachestat __user *, cstat, unsigned = int, flags)

...

COMPAT_SYSCALL_D= EFINE6(cachestat, compat_arg_u64_dual(off),=C2=A0
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0unsigned int, fd, size_t, len, struct cac= hestat __user *, cstat,=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0unsigned int, flags)


I= t looks a bit odd to me that fd is not the first argument, but perhaps this=
is an acceptable sacrifice to avoid unused arg and keep the flag= s...

Let me know what you think about this!
<= div>


=C2=A0 =C2=A0 =C2=A0Arnd
--000000000000e7509605f47b43f2--