Re: [PATCH 5/7] FUSE: implement ioctl support

From: H. Peter Anvin
Date: Thu Aug 28 2008 - 16:21:50 EST


Miklos Szeredi wrote:
On Thu, 28 Aug 2008, H. Peter Anvin wrote:
Tejun Heo wrote:
Ah.... funky. If this retry thing is too repulsive, I guess the best
alternative would be directly accessing caller's memory as Miklos suggested.

Be careful -- there are some serious dragons there in the presence of multiple threads.

OK, it should map /proc/pid/task/tid/mem. Or rather
/proc/tid/task/tid/mem, as the pid (tgid) of the caller is not
currently passed to the filesystem.


Uhm, no. You can still have it change underneath you as long as you have any thread of execution with access to the same memory.

This is *hard* to get right, and we screw this up in the kernel with painful regularity. The throught of having user-space processes, which don't have access to the kernel locking primitives and functions like copy_from_user() dealing with this stuff scares me crazy.

That is why I'm suggesting using an in-kernel linearizer.

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/