Module Name: src Committed By: ozaki-r Date: Wed Mar 2 04:11:41 UTC 2022
Modified Files: src/usr.sbin/puffs/mount_9p: node.c Log Message: mount_9p: fix writing to a file opened with write-only mode With the page cache, writing data to a file may demand to read contents from a storage to fill a page in the page cache first. Opening a file with write-only mode by a user lets a mount_9p process open a file with write-only mode too at a 9p server. Thus, a read request to the file from the page cache fails. So we need to open a file always with read mode (internally) even if it is opened with write-only mode by a user. Note that the change doesn't mean that mount_9p allows users to read contents from a file that is opened with write-only mode. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/usr.sbin/puffs/mount_9p/node.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/puffs/mount_9p/node.c diff -u src/usr.sbin/puffs/mount_9p/node.c:1.29 src/usr.sbin/puffs/mount_9p/node.c:1.30 --- src/usr.sbin/puffs/mount_9p/node.c:1.29 Mon Jun 1 13:30:52 2020 +++ src/usr.sbin/puffs/mount_9p/node.c Wed Mar 2 04:11:41 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: node.c,v 1.29 2020/06/01 13:30:52 uwe Exp $ */ +/* $NetBSD: node.c,v 1.30 2022/03/02 04:11:41 ozaki-r Exp $ */ /* * Copyright (c) 2007 Antti Kantee. All Rights Reserved. @@ -27,7 +27,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: node.c,v 1.29 2020/06/01 13:30:52 uwe Exp $"); +__RCSID("$NetBSD: node.c,v 1.30 2022/03/02 04:11:41 ozaki-r Exp $"); #endif /* !lint */ #include <assert.h> @@ -274,6 +274,8 @@ puffs9p_node_open(struct puffs_usermount puffs_setback(pcc, PUFFS_SETBACK_INACT_N1); if (pn->pn_va.va_type != VDIR) { + /* Always require read access for page cache */ + mode |= FREAD; if (mode & FREAD && p9n->fid_read == P9P_INVALFID) { nfid = NEXTFID(p9p); error = proto_cc_open(pu, p9n->fid_base, nfid,