Re: [PULL] vhost: cleanups and fixes
From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2018-11-02 19:01:42
Also in:
kvm, lkml
On Fri, Nov 02, 2018 at 10:15:56AM -0700, Linus Torvalds wrote:
On Fri, Nov 2, 2018 at 10:10 AM Linus Torvalds [off-list ref] wrote:quoted
Don't you take over the VM with "use_mm()" when you do the copies? So yes, it's a kernel thread, but it has a user VM, and though that should have the user limits.Oooh. *Just* as I sent this, I realized that "use_mm()" doesn't update the thread addr_limit. That actually looks like a bug to me - although one that you've apparently been aware of and worked around. Wouldn't it be nicer to just make "use_mm()" do set_fs(USER_DS); instead? And undo it on unuse_mm()? And, in fact, maybe we should default kernel threads to have a zero address limit, so that they can't do any user accesses at all without doing this?
Try it and watch it fail to set initramfs up, let alone exec the init...
Adding Al to the cc, because I think he's been looking at set_fs() in general.
It would be the right thing (with return to KERNEL_DS), but I'm not certain if GPU users will survive - these two drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h:157: use_mm(mmptr); \ drivers/gpu/drm/i915/gvt/kvmgt.c:1799: use_mm(kvm->mm); I don't understand the call chains there (especially for the first one) well enough to tell.