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@gmail.com> Reviewed by: kib MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D26816
This commit is contained in:
parent
1a34e9fad6
commit
91bc73618d
@ -1275,6 +1275,27 @@ linprocfs_doprocmaps(PFS_FILL_ARGS)
|
|||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
* Criteria for interface name translation
|
||||||
*/
|
*/
|
||||||
@ -1853,7 +1874,7 @@ linprocfs_init(PFS_INIT_ARGS)
|
|||||||
NULL, &procfs_notsystem, NULL, 0);
|
NULL, &procfs_notsystem, NULL, 0);
|
||||||
pfs_create_file(dir, "maps", &linprocfs_doprocmaps,
|
pfs_create_file(dir, "maps", &linprocfs_doprocmaps,
|
||||||
NULL, NULL, NULL, PFS_RD);
|
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);
|
procfs_attr_rw, &procfs_candebug, NULL, PFS_RDWR | PFS_RAW);
|
||||||
pfs_create_file(dir, "mounts", &linprocfs_domtab,
|
pfs_create_file(dir, "mounts", &linprocfs_domtab,
|
||||||
NULL, NULL, NULL, PFS_RD);
|
NULL, NULL, NULL, PFS_RD);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user