https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379
Bug ID: 236379 Summary: [FUSE] fuse(4) writes from aio(4) don't set the fuse_out_header.pid field correctly Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Many People Priority: --- Component: kern Assignee: b...@freebsd.org Reporter: asom...@freebsd.org Every FUSE operation includes the pid of the process that issued the request. However, when an aiod kernel process writes to a fuse-backed file on behalf of a regular user process, fuse(4) only sees aiod's pid_t, not the user process's. This can cause a fuse filesystem daemon to incorrectly authenticate write commands There are three possible solutions: 1) Set the pid field correctly. The aio daemon already keeps track of it, but doesn't send that information to fuse(4). It's not obvious how. a) Perhaps stuff it into a spare field in struct ucred? b) Define custom fileops for fuse and store the pid that opened a file in struct file.f_data? But this would cause problems when sending a file descriptor from one process to another with sendmsg. 2) Set FUSE_WRITE_CACHE, just like writes from the pager. Currently, however, fuse(4) isn't aware of which operations come from aiod. 3) Alternatively, since FUSE_WRITE is an asynchronous operation, aio(4) could learn to bypass VOP_WRITE and use a threadless direct dispatch like it currently does for disks. That would improve performance, too. This bug probably applies to aio reads as well, but I haven't checked yet. -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"