svn commit: r366900 - head/sys/compat/linprocfs
Edward Tomasz Napierala
trasz at FreeBSD.org
Tue Oct 20 17:24:30 UTC 2020
Author: trasz
Date: Tue Oct 20 17:24:29 2020
New Revision: 366900
URL: https://svnweb.freebsd.org/changeset/base/366900
Log:
Fix linprocfs(4) /proc/self/mem semantics to more closely match Linux.
Steam's Anti-Cheat might depend on it.
PR: 248223
Analyzed by: Alex S <iwtcex at gmail.com>
Reviewed by: kib
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D26816
Modified:
head/sys/compat/linprocfs/linprocfs.c
Modified: head/sys/compat/linprocfs/linprocfs.c
==============================================================================
--- head/sys/compat/linprocfs/linprocfs.c Tue Oct 20 17:19:10 2020 (r366899)
+++ head/sys/compat/linprocfs/linprocfs.c Tue Oct 20 17:24:29 2020 (r366900)
@@ -1276,6 +1276,27 @@ linprocfs_doprocmaps(PFS_FILL_ARGS)
}
/*
+ * Filler function for proc/pid/mem
+ */
+static int
+linprocfs_doprocmem(PFS_FILL_ARGS)
+{
+ ssize_t resid;
+ int error;
+
+ resid = uio->uio_resid;
+ error = procfs_doprocmem(PFS_FILL_ARGNAMES);
+
+ if (uio->uio_rw == UIO_READ && resid != uio->uio_resid)
+ return (0);
+
+ if (error == EFAULT)
+ error = EIO;
+
+ return (error);
+}
+
+/*
* Criteria for interface name translation
*/
#define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER)
@@ -1853,7 +1874,7 @@ linprocfs_init(PFS_INIT_ARGS)
NULL, &procfs_notsystem, NULL, 0);
pfs_create_file(dir, "maps", &linprocfs_doprocmaps,
NULL, NULL, NULL, PFS_RD);
- pfs_create_file(dir, "mem", &procfs_doprocmem,
+ pfs_create_file(dir, "mem", &linprocfs_doprocmem,
procfs_attr_rw, &procfs_candebug, NULL, PFS_RDWR | PFS_RAW);
pfs_create_file(dir, "mounts", &linprocfs_domtab,
NULL, NULL, NULL, PFS_RD);
More information about the svn-src-all
mailing list