Hey, This is another round of Christian's asking sus questions about kernel apis. I asked them a few people and generally the answers I got was "Good question, I don't know." or the reasoning varied a lot. So I take it I'm not the only one with that question. I was looking at a potential epoll() bug and it got me thinking about dos & don'ts for put_user()/copy_from_user() and related helpers as epoll does acquire the epoll mutex and then goes on to loop over a list of ready items and calls __put_user() for each item. Granted, it only puts a __u64 and an integer but still that seems adventurous to me and I wondered why. Generally, new vfs apis always try hard to call helpers that copy to or from userspace without any locks held as my understanding has been that this is best practice as to avoid risking taking page faults while holding a mutex or semaphore even though that's supposedly safe. Is this understanding correct? And aside from best practice is it in principle safe to copy to or from userspace with sleeping locks held?