Sun Jul 18 23:57:34 2021 UTC ()
Fix ptyfs link and symlink ops.

They were set (via macro obfuscation just eliminated) to
genfs_abortop, which is the wrong thing. These code paths are
currently inaccessible because of EROFS enforcement in namei, but if
either were reached odd behavior would likely ensue. Use
genfs_eopnotsupp like the rest of the ops that don't make sense here.


(dholland)
diff -r1.65 -r1.66 src/sys/fs/ptyfs/ptyfs_vnops.c

cvs diff -r1.65 -r1.66 src/sys/fs/ptyfs/ptyfs_vnops.c (expand / switch to unified diff)

--- src/sys/fs/ptyfs/ptyfs_vnops.c 2021/07/18 23:57:14 1.65
+++ src/sys/fs/ptyfs/ptyfs_vnops.c 2021/07/18 23:57:34 1.66
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: ptyfs_vnops.c,v 1.65 2021/07/18 23:57:14 dholland Exp $ */ 1/* $NetBSD: ptyfs_vnops.c,v 1.66 2021/07/18 23:57:34 dholland Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1993, 1995 4 * Copyright (c) 1993, 1995
5 * The Regents of the University of California. All rights reserved. 5 * The Regents of the University of California. All rights reserved.
6 * 6 *
7 * This code is derived from software contributed to Berkeley by 7 * This code is derived from software contributed to Berkeley by
8 * Jan-Simon Pendry. 8 * Jan-Simon Pendry.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
@@ -66,27 +66,27 @@ @@ -66,27 +66,27 @@
66 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 66 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
67 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 67 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
68 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 68 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
69 * SUCH DAMAGE. 69 * SUCH DAMAGE.
70 * 70 *
71 * @(#)procfs_vnops.c 8.18 (Berkeley) 5/21/95 71 * @(#)procfs_vnops.c 8.18 (Berkeley) 5/21/95
72 */ 72 */
73 73
74/* 74/*
75 * ptyfs vnode interface 75 * ptyfs vnode interface
76 */ 76 */
77 77
78#include <sys/cdefs.h> 78#include <sys/cdefs.h>
79__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.65 2021/07/18 23:57:14 dholland Exp $"); 79__KERNEL_RCSID(0, "$NetBSD: ptyfs_vnops.c,v 1.66 2021/07/18 23:57:34 dholland Exp $");
80 80
81#include <sys/param.h> 81#include <sys/param.h>
82#include <sys/systm.h> 82#include <sys/systm.h>
83#include <sys/time.h> 83#include <sys/time.h>
84#include <sys/kernel.h> 84#include <sys/kernel.h>
85#include <sys/file.h> 85#include <sys/file.h>
86#include <sys/filedesc.h> 86#include <sys/filedesc.h>
87#include <sys/proc.h> 87#include <sys/proc.h>
88#include <sys/vnode.h> 88#include <sys/vnode.h>
89#include <sys/namei.h> 89#include <sys/namei.h>
90#include <sys/malloc.h> 90#include <sys/malloc.h>
91#include <sys/mount.h> 91#include <sys/mount.h>
92#include <sys/select.h> 92#include <sys/select.h>
@@ -157,31 +157,31 @@ const struct vnodeopv_entry_desc ptyfs_v @@ -157,31 +157,31 @@ const struct vnodeopv_entry_desc ptyfs_v
157 { &vop_read_desc, ptyfs_read }, /* read */ 157 { &vop_read_desc, ptyfs_read }, /* read */
158 { &vop_write_desc, ptyfs_write }, /* write */ 158 { &vop_write_desc, ptyfs_write }, /* write */
159 { &vop_fallocate_desc, genfs_eopnotsupp }, /* fallocate */ 159 { &vop_fallocate_desc, genfs_eopnotsupp }, /* fallocate */
160 { &vop_fdiscard_desc, genfs_eopnotsupp }, /* fdiscard */ 160 { &vop_fdiscard_desc, genfs_eopnotsupp }, /* fdiscard */
161 { &vop_ioctl_desc, ptyfs_ioctl }, /* ioctl */ 161 { &vop_ioctl_desc, ptyfs_ioctl }, /* ioctl */
162 { &vop_fcntl_desc, genfs_fcntl }, /* fcntl */ 162 { &vop_fcntl_desc, genfs_fcntl }, /* fcntl */
163 { &vop_poll_desc, ptyfs_poll }, /* poll */ 163 { &vop_poll_desc, ptyfs_poll }, /* poll */
164 { &vop_kqfilter_desc, ptyfs_kqfilter }, /* kqfilter */ 164 { &vop_kqfilter_desc, ptyfs_kqfilter }, /* kqfilter */
165 { &vop_revoke_desc, genfs_revoke }, /* revoke */ 165 { &vop_revoke_desc, genfs_revoke }, /* revoke */
166 { &vop_mmap_desc, genfs_eopnotsupp }, /* mmap */ 166 { &vop_mmap_desc, genfs_eopnotsupp }, /* mmap */
167 { &vop_fsync_desc, genfs_nullop }, /* fsync */ 167 { &vop_fsync_desc, genfs_nullop }, /* fsync */
168 { &vop_seek_desc, genfs_nullop }, /* seek */ 168 { &vop_seek_desc, genfs_nullop }, /* seek */
169 { &vop_remove_desc, genfs_eopnotsupp }, /* remove */ 169 { &vop_remove_desc, genfs_eopnotsupp }, /* remove */
170 { &vop_link_desc, genfs_abortop }, /* link */ 170 { &vop_link_desc, genfs_eopnotsupp }, /* link */
171 { &vop_rename_desc, genfs_eopnotsupp }, /* rename */ 171 { &vop_rename_desc, genfs_eopnotsupp }, /* rename */
172 { &vop_mkdir_desc, genfs_eopnotsupp }, /* mkdir */ 172 { &vop_mkdir_desc, genfs_eopnotsupp }, /* mkdir */
173 { &vop_rmdir_desc, genfs_eopnotsupp }, /* rmdir */ 173 { &vop_rmdir_desc, genfs_eopnotsupp }, /* rmdir */
174 { &vop_symlink_desc, genfs_abortop }, /* symlink */ 174 { &vop_symlink_desc, genfs_eopnotsupp }, /* symlink */
175 { &vop_readdir_desc, ptyfs_readdir }, /* readdir */ 175 { &vop_readdir_desc, ptyfs_readdir }, /* readdir */
176 { &vop_readlink_desc, genfs_eopnotsupp }, /* readlink */ 176 { &vop_readlink_desc, genfs_eopnotsupp }, /* readlink */
177 { &vop_abortop_desc, genfs_abortop }, /* abortop */ 177 { &vop_abortop_desc, genfs_abortop }, /* abortop */
178 { &vop_inactive_desc, ptyfs_inactive }, /* inactive */ 178 { &vop_inactive_desc, ptyfs_inactive }, /* inactive */
179 { &vop_reclaim_desc, ptyfs_reclaim }, /* reclaim */ 179 { &vop_reclaim_desc, ptyfs_reclaim }, /* reclaim */
180 { &vop_lock_desc, genfs_lock }, /* lock */ 180 { &vop_lock_desc, genfs_lock }, /* lock */
181 { &vop_unlock_desc, genfs_unlock }, /* unlock */ 181 { &vop_unlock_desc, genfs_unlock }, /* unlock */
182 { &vop_bmap_desc, genfs_eopnotsupp }, /* bmap */ 182 { &vop_bmap_desc, genfs_eopnotsupp }, /* bmap */
183 { &vop_strategy_desc, genfs_badop }, /* strategy */ 183 { &vop_strategy_desc, genfs_badop }, /* strategy */
184 { &vop_print_desc, ptyfs_print }, /* print */ 184 { &vop_print_desc, ptyfs_print }, /* print */
185 { &vop_islocked_desc, genfs_islocked }, /* islocked */ 185 { &vop_islocked_desc, genfs_islocked }, /* islocked */
186 { &vop_pathconf_desc, ptyfs_pathconf }, /* pathconf */ 186 { &vop_pathconf_desc, ptyfs_pathconf }, /* pathconf */
187 { &vop_advlock_desc, ptyfs_advlock }, /* advlock */ 187 { &vop_advlock_desc, ptyfs_advlock }, /* advlock */