From nobody Tue Dec 26 03:31:38 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4SzgLD3glDz55RxY; Tue, 26 Dec 2023 03:31:48 +0000 (UTC) (envelope-from zlei@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SzgLD3DFwz4cwp; Tue, 26 Dec 2023 03:31:48 +0000 (UTC) (envelope-from zlei@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703561508; 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=eQ3DnaYLQHz/UvOn+ZG8Z3EhqpcD2A4p05gTTwmhJrM=; b=Fr16QL6yDlbnAsfT6vozbWwZIO9TNuLQ5F3X6Gczo11eY26/TUCiTW2kl66Chiazcq/3fO 2tEHdoQed8Ii9WWV5PolNXFDsxJHQX4K1s13BR/Z3cH8jLwwLaHreQ7U3wBkAGgbTBTej6 UDL8emWWs1n81U+ibJhfoFc3GnjdpfEFX/wEbFVmDamloC25ZXDthgRT5kn+tjKmDSynFR I5/E20hSd4z6WAxJECPk7GKscnMjRGGaeMuG+1kIdFs3dB0lGuu2x9CzknaRC4BVE5tNc7 d4Q05IwzEnSreAbtIDmUY1Dl8UMblQbUFlsGfA7vKiIKpsGaBZww9H9abHoDUw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1703561508; a=rsa-sha256; cv=none; b=SpadAsD4AqQjDM/p7fH1WyooLKq/aDYHmVVlr3YCQ3JV92nZs5yB9VMgGLL4b5VcIKISa7 t6lJbc/CXwAaMfeLGz8kfrNXI+F2m+1Vl5bd//TLfW4BLAja2Q5R4sk1Eb/5liWBWCnBX+ m3+7nsH+KBqhXfTzxEcZJH/4w0TfkAat3qA9rviPBsnNnjhhrvbng9nKAfKFwSFtGIemZi dDh2puGcOoSFerZS8HFd6CJx8b3zg7CssIm9vVnTc06AdFwEZmGU2GHZBLnTBW/5aEYWDJ PIXLaNv5LnWeB/h6yR7OLJrz1xKCR/hxStaAhERnZjxjlmz3w5vqFwZZWUlEbw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703561508; 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=eQ3DnaYLQHz/UvOn+ZG8Z3EhqpcD2A4p05gTTwmhJrM=; b=JbbXiUY/1TNG1EIrvXa4Gb94qfTGnPXvPtnbU9LQLUcGZ0OQdGNWiWYSDQTVgVWRxn9AgH mUMOHIQfOUSuWaa2SDf4ZmY3mqK8MGQWT+Hm5zdG26CVbSKbHd4/joiRzPi8M6meBxGUVP bUUYM1086Z4qjDz4qhgWuvwQup4Ti6NNR8oM8GONDYH14KZaXcKkNiJ2lhrYuJLHutfmEM q9kK19GIkYykD3YbCdzdvXQ2GrKZMmhjPQVlqZUFWmudjXalw3NAs5qNL/e8Nirn/+eTWO aiAmH2O/4TQnKWfEmrvwA9sLKNRvko8fCRYTRH2BGel1VzvCjimernA2Y48QKA== Received: from smtpclient.apple (ns1.oxydns.net [45.32.91.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: zlei/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4SzgLB3fzyz1K53; Tue, 26 Dec 2023 03:31:46 +0000 (UTC) (envelope-from zlei@FreeBSD.org) From: Zhenlei Huang Message-Id: <78061056-76D8-457C-A522-8CE62B481317@FreeBSD.org> Content-Type: multipart/alternative; boundary="Apple-Mail=_B4F4564D-8E62-412A-A497-93B918D5E772" List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.4\)) Subject: Re: git: 2a1d50fc12f6 - main - vfs_domount_update(): correct fsidcmp() usage Date: Tue, 26 Dec 2023 11:31:38 +0800 In-Reply-To: <72190C27-0D45-4300-BB78-719F5EB510E9@FreeBSD.org> Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: Konstantin Belousov References: <202312260136.3BQ1aOxq051977@gitrepo.freebsd.org> <72190C27-0D45-4300-BB78-719F5EB510E9@FreeBSD.org> X-Mailer: Apple Mail (2.3696.120.41.1.4) --Apple-Mail=_B4F4564D-8E62-412A-A497-93B918D5E772 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On Dec 26, 2023, at 11:29 AM, Zhenlei Huang wrote: >=20 >=20 >=20 >> On Dec 26, 2023, at 9:36 AM, Konstantin Belousov > wrote: >>=20 >> The branch main has been updated by kib: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D2a1d50fc12f6e604da834fbaea961d41= 2aae6e85 = >>=20 >> commit 2a1d50fc12f6e604da834fbaea961d412aae6e85 >> Author: Andrew Gierth > >> AuthorDate: 2023-12-24 12:04:21 +0000 >> Commit: Konstantin Belousov > >> CommitDate: 2023-12-26 01:35:46 +0000 >>=20 >> vfs_domount_update(): correct fsidcmp() usage >>=20 >> MFC after: 3 days >> --- >> sys/kern/vfs_mount.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >>=20 >> diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c >> index 8e54c832e9f1..331e4887c200 100644 >> --- a/sys/kern/vfs_mount.c >> +++ b/sys/kern/vfs_mount.c >> @@ -1388,7 +1388,7 @@ vfs_domount_update( >> error =3D EINVAL; >> goto end; >> } >> - if (fsidcmp(&fsid_up, &mp->mnt_stat.f_fsid) !=3D 0) { >> + if (fsidcmp(fsid_up, &mp->mnt_stat.f_fsid) !=3D 0) { >> error =3D ENOENT; >> goto end; >> } >=20 >=20 The fsidcmp is currently defined as ``` #define fsidcmp(a, b) memcmp((a), (b), sizeof(fsid_t)) ``` >=20 > I guess we want to ensure ` typeof(a) =3D=3D typeof(b) =3D=3D fsid_t = `, to prevent such kind of error in future. >=20 > I see both gcc [1] and clang [2] have __builtin_types_compatible_p , = so probably a good definition of fsidcmp should be >=20 > ``` > #define TYPEASSERT(v, t) \ > _Static_assert(__builtin_types_compatible_p(typeof(v), t), = "Requires type '" #t "'") >=20 > #define fsidcmp(a, b) ({ \ > TYPEASSERT((a), fsid_t *); \ > TYPEASSERT((b), fsid_t *); \ > memcmp((a), (b), sizeof(fsid_t)); \ > }) > ``` >=20 > 1. https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html = > 2. https://clang.llvm.org/docs/LanguageExtensions.html = > Best regards, > Zhenlei >=20 --Apple-Mail=_B4F4564D-8E62-412A-A497-93B918D5E772 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii

On Dec 26, 2023, at 11:29 AM, Zhenlei Huang <zlei@FreeBSD.org> = wrote:



On Dec 26, 2023, at 9:36 AM, Konstantin Belousov <kib@FreeBSD.org> = wrote:

The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=3D2a1d50fc12f6e604da834= fbaea961d412aae6e85

commit = 2a1d50fc12f6e604da834fbaea961d412aae6e85
Author: =     Andrew Gierth <andrew@tao146.riddles.org.uk>
AuthorDate: = 2023-12-24 12:04:21 +0000
Commit: =     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2023-12-26 01:35:46 +0000

   vfs_domount_update(): correct fsidcmp() = usage

   MFC after: =      3 days
---
= sys/kern/vfs_mount.c | 2 +-
1 file changed, 1 = insertion(+), 1 deletion(-)

diff --git = a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index = 8e54c832e9f1..331e4887c200 100644
--- = a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -1388,7 +1388,7 @@ vfs_domount_update(
= = = = error =3D EINVAL;
goto end;
}
- = = if (fsidcmp(&fsid_up, &mp->mnt_stat.f_fsid) !=3D 0) = {
+= = if (fsidcmp(fsid_up, &mp->mnt_stat.f_fsid) !=3D 0) = {
error =3D ENOENT;
= = = = goto end;
}


The fsidcmp is currently defined = as
```
#define fsidcmp(a, b) memcmp((a), (b), = sizeof(fsid_t))
```


I guess = we want to ensure ` typeof(a) =3D=3D typeof(b) =3D=3D fsid_t `, to prevent = such kind of error in future.

I see both gcc [1] and = clang [2] have __builtin_types_compatible_p , so probably a good = definition of fsidcmp should be

```
#define = TYPEASSERT(v, t) \
= _Static_assert(__builtin_types_compatible_p(typeof(v), t), = "Requires type '" #t "'")

#define fsidcmp(a, b) ({ = \
= TYPEASSERT((a), fsid_t *); \
= TYPEASSERT((b), fsid_t *); \
memcmp((a), (b), sizeof(fsid_t)); \


= --Apple-Mail=_B4F4564D-8E62-412A-A497-93B918D5E772--