[LTP] [PATCH 5/6] Add ioctl_pidfd03 test
    Cyril Hrubis 
    chrubis@suse.cz
       
    Mon Jun 30 16:30:18 CEST 2025
    
    
  
Hi!
> > If I'm reading the kernel code correctly, we should get the same result
> > even before the pid was waited for, so we may as well do this check
> > twice, once before the WAITPID() and once after the WAITPID().
> In this case, ESRCH is obtained only when info->mask == 0 __after__ 
> child has been reaped.
> If child has not completed, we obtain the same result of the 
> ioctl_pidfd02 check before waitpid().
Sigh, right, I misread the kernel code again.
We get ESRCH in the case of:
- the target pid is not in our namespace or child namespace
- task was reaped and PIDFD_INFO_EXIT was not set
- task was reaped before we called get_task_cred()
- task was reaped after we filled in data from task_cred
  (there is another check at the end of the function to make sure we do
  not return stale data)
So I suppose that we can hit the first two, the second two are
inherently racy.
So after all with a pidfd pointing to a process in a child pid namespace
we get all the uids/gids and pid filled in. Possibly changed by
mappings, but I suppose these are going to be 1:1 since we haven't set
any mapping tables.
-- 
Cyril Hrubis
chrubis@suse.cz
    
    
More information about the ltp
mailing list