On 05/20, Stanislav Kinsbursky wrote:
Usermode helper executes all binaries in global "init" root context. This
doesn't allow to call to call the binary from other root (for example in a
container).
Currently, containerized NFS server requires an ability to execute a binary in
a other context, than "init" root (UMH is used for client recovery tracking).
This patch adds root swap to ____call_usermodehelper(), if non-NULL root was
passed as a part of subprocess_info data,
Why do we need the new member/arguments?
@@ -215,6 +216,9 @@ static int ____call_usermodehelper(void *data)
*/
set_user_nice(current, 0);
+ if (sub_info->root)
+ set_fs_root(current->fs, sub_info->root);
Can't subprocess_info->init() do this? You can pass root as ->data.
IOW, unless I missed something, nfs can do this without any changes
in kmod.c.
Oleg.