]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
fusefs: validate servers' error values
authorAlan Somers <asomers@FreeBSD.org>
Fri, 15 Apr 2022 19:04:24 +0000 (13:04 -0600)
committerAlan Somers <asomers@FreeBSD.org>
Fri, 15 Apr 2022 19:57:32 +0000 (13:57 -0600)
commit155ac516c60f20573d15c54bafabfd0e52d21fa6
tree753efe4b132f07fd864f7d2146080c2d4b78ab69
parenta812a5cacbe06b6ca6917a1e2c023f1e8fe5df2c
fusefs: validate servers' error values

Formerly fusefs would pass up the stack any error value returned by the
fuse server.  However, some values aren't valid for userland, but have
special meanings within the kernel.  One of these, EJUSTRETURN, could
cause a kernel page fault if the server returned it in response to
FUSE_LOOKUP.  Fix by validating all errors returned by the server.

Also, fix a data lifetime bug in the FUSE_DESTROY test.

PR: 263220
Reported by: Robert Morris <rtm@lcs.mit.edu>
MFC after: 3 weeks
Sponsored by: Axcient
Reviewed by: emaste
Differential Revision: https://reviews.freebsd.org/D34931
sys/fs/fuse/fuse_device.c
tests/sys/fs/fusefs/lookup.cc
tests/sys/fs/fusefs/mockfs.cc
tests/sys/fs/fusefs/mockfs.hh
tests/sys/fs/fusefs/utils.cc