On Tue, Aug 26, 2025 at 04:10:31PM +0000, Pasha Tatashin wrote: > > > I think in the calls the idea was it was reasonable to start without > > sessions fds at all, but in this case we shouldn't be mucking with > > pids or current. > > The existing interface, with the addition of passing a pidfd, provides > the necessary flexibility without being invasive. The change would be > localized to the new code that performs the FD retrieval and wouldn't > involve spoofing current or making widespread changes. > For example, to handle cgroup charging for a memfd, the flow inside > memfd_luo_retrieve() would look something like this: > > task = get_pid_task(target_pid, PIDTYPE_PID); > mm = get_task_mm(task); > // ... > folio = kho_restore_folio(phys); > // Charge to the target mm, not 'current->mm' > mem_cgroup_charge(folio, mm, ...); > mmput(mm); > put_task_struct(task); Execpt it doesn't work like that in all places, iommufd for example uses GFP_KERNEL_ACCOUNT which relies on current. How you fix that when current is the wrong cgroup, I have no idea if it is even possible. Jason