From nobody Thu Jun 29 08:20:14 2023 X-Original-To: dev-commits-src-branches@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 4QsBG661ljz4knRr; Thu, 29 Jun 2023 08:20:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QsBG654N6z3tR3; Thu, 29 Jun 2023 08:20:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688026814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rGfPuvYyOEYGppzTEhnYQpSkBzIRMHwxstc1Oz05Dn8=; b=VhQvvwf0SJ8Ne7+7g48vRAMlAuhGyMskLBijct1vIEpQctj3XSy5fBFEm8kZ8txjmrv/SL MlxdrXk2zPkURkaTdv7X1ylGpPO5IKp2X8waVa8bijP7N4tD0Yo6RF4XtD/hdvKsGCQSJM QgaiB7waAZluabeDfWrwC2fB84BfIfU8m2201iuikwC7Ta3nKOi27uSFVv9B84ktG7wdu6 A7344FcRdezTmp/oJN1n/RjpaHGYWtvV37SPXQZVof7QmUczPteDeTkfgmnBLdNF4gwpBY wzq9ieZ79tdPDJg3GSdS7GcbIWrYgtlpy5P/lp2+10TR7Sm6mYztXb9m4lz6gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688026814; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=rGfPuvYyOEYGppzTEhnYQpSkBzIRMHwxstc1Oz05Dn8=; b=GNwPDUlhRNPmLqE+NgbiWbxrlTccQCBjB80QrAjszepT9oyhUJky5sFZwplRu2eim1TsaY 8hmXwSEXvuc7QojeWsmJZfCmJKT/ShQ6dxpIspT4bltu5GrTbtAmV/DMitxqTarBmZyE0Y xvjzb+YIbCdn3QUKu9aSicCEtXvwcM0TPhMSPXCzfVTy61sHfNNahIl9MbYdRmr0CRRWOj 3LP60C73aEaLe5BA9T5o1oJzTHR7LOowFNnNgieEvdQOy/FodcimCQzbw+OioYQrmHWH5Z nNcL5CvM6JkJDDGV+kfGamtr7LH8pEeM8Oh4LbXYT8vnfxClQ3uBsxskUBMNZA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1688026814; a=rsa-sha256; cv=none; b=e/ki8QKD9zvcoG9u8nAC4kVUbWmDXdLvCSVJT8eBMIEMzGLvV+CxYgi9hZs7Rxb6KXUOAv aOauhArJF+G4QsLHgSEW1sYlFqT/leSVRCw7/Q7c+BhVZ7Vt/K9U1sQ05zCwrUQucuP+cz K9dWOD6V+s453WXPiFMUWaPB+k/rcwaDw4rVhSncjPTiZ1WWn7GtCKJ+VQ4H/vrr67An1E Pp6y+r7IYE0Y2Gp05Mfw4Zv2UyZzwhhSmV0KNT9qBov+uFyxQl7x+V9RjOq6Pvnuvgdek+ 9SEZAv7lsHEShUqQ4FC65SzSK56ViUPeOuUveJiqYiTym2u9MIMvyZr40MIU0g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QsBG63ywNz17NN; Thu, 29 Jun 2023 08:20:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 35T8KEU0081643; Thu, 29 Jun 2023 08:20:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 35T8KEBs081637; Thu, 29 Jun 2023 08:20:14 GMT (envelope-from git) Date: Thu, 29 Jun 2023 08:20:14 GMT Message-Id: <202306290820.35T8KEBs081637@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dmitry Chagin Subject: git: c43f5eb2f4c7 - stable/13 - linux(4): Move translate_vnhook_major_minor() into the Linux common module List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dchagin X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c43f5eb2f4c7cbfde1873c9d0ece23e719ae312e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=c43f5eb2f4c7cbfde1873c9d0ece23e719ae312e commit c43f5eb2f4c7cbfde1873c9d0ece23e719ae312e Author: Dmitry Chagin AuthorDate: 2023-04-28 08:54:58 +0000 Commit: Dmitry Chagin CommitDate: 2023-06-29 08:15:29 +0000 linux(4): Move translate_vnhook_major_minor() into the Linux common module (cherry picked from commit 6072eea0c375fc3ab0cf5bb494c75d1beac7b8ba) --- sys/compat/linux/linux_stats.c | 24 ------------------------ sys/compat/linux/linux_util.c | 26 ++++++++++++++++++++++++++ sys/compat/linux/linux_util.h | 3 +++ 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/sys/compat/linux/linux_stats.c b/sys/compat/linux/linux_stats.c index 79937fd9fa86..219f4a602eb4 100644 --- a/sys/compat/linux/linux_stats.c +++ b/sys/compat/linux/linux_stats.c @@ -52,30 +52,6 @@ __FBSDID("$FreeBSD$"); #include #include -static void -translate_vnhook_major_minor(struct vnode *vp, struct stat *sb) -{ - int major, minor; - - if (vn_isdisk(vp)) { - sb->st_mode &= ~S_IFMT; - sb->st_mode |= S_IFBLK; - } - - /* - * Return the same st_dev for every devfs instance. The reason - * for this is to work around an idiosyncrasy of glibc getttynam() - * implementation: it checks whether st_dev returned for fd 0 - * is the same as st_dev returned for the target of /proc/self/fd/0 - * symlink, and with linux chroots having their own devfs instance, - * the check will fail if you chroot into it. - */ - if (rootdevmp != NULL && vp->v_mount->mnt_vfc == rootdevmp->mnt_vfc) - sb->st_dev = rootdevmp->mnt_stat.f_fsid.val[0]; - - if (linux_vn_get_major_minor(vp, &major, &minor) == 0) - sb->st_rdev = (major << 8 | minor); -} static int linux_kern_statat(struct thread *td, int flag, int fd, const char *path, diff --git a/sys/compat/linux/linux_util.c b/sys/compat/linux/linux_util.c index 2a21fdc10bd7..5995ac5e18af 100644 --- a/sys/compat/linux/linux_util.c +++ b/sys/compat/linux/linux_util.c @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -225,6 +226,31 @@ linux_vn_get_major_minor(const struct vnode *vp, int *major, int *minor) return (error); } +void +translate_vnhook_major_minor(struct vnode *vp, struct stat *sb) +{ + int major, minor; + + if (vn_isdisk(vp)) { + sb->st_mode &= ~S_IFMT; + sb->st_mode |= S_IFBLK; + } + + /* + * Return the same st_dev for every devfs instance. The reason + * for this is to work around an idiosyncrasy of glibc getttynam() + * implementation: it checks whether st_dev returned for fd 0 + * is the same as st_dev returned for the target of /proc/self/fd/0 + * symlink, and with linux chroots having their own devfs instance, + * the check will fail if you chroot into it. + */ + if (rootdevmp != NULL && vp->v_mount->mnt_vfc == rootdevmp->mnt_vfc) + sb->st_dev = rootdevmp->mnt_stat.f_fsid.val[0]; + + if (linux_vn_get_major_minor(vp, &major, &minor) == 0) + sb->st_rdev = (major << 8 | minor); +} + char * linux_get_char_devices(void) { diff --git a/sys/compat/linux/linux_util.h b/sys/compat/linux/linux_util.h index 37445ad0af27..f61aeea99136 100644 --- a/sys/compat/linux/linux_util.h +++ b/sys/compat/linux/linux_util.h @@ -105,6 +105,8 @@ struct linux_device_handler { int linux_char_device; }; +struct stat; + int linux_device_register_handler(struct linux_device_handler *h); int linux_device_unregister_handler(struct linux_device_handler *h); char *linux_driver_get_name_dev(device_t dev); @@ -112,6 +114,7 @@ int linux_driver_get_major_minor(const char *node, int *major, int *minor); int linux_vn_get_major_minor(const struct vnode *vn, int *major, int *minor); char *linux_get_char_devices(void); void linux_free_get_char_devices(char *string); +void translate_vnhook_major_minor(struct vnode *vp, struct stat *sb); #if defined(KTR)