Hi! To my understanding ->setxattr() is always being called with i_mutex held. ->set_context() in ext4 stores the security context using ext4_xattr_set(), but the fs crypto framework does not lock the inode itself. So, depending on the call path, ext4_xattr_set() is sometimes being called with i_mutex held and some times not.
What are the locking rules for fscrypt_operations and especially ->set_context()? Thanks, //richard