On Fri, Sep 06, 2019 at 04:46:47PM +0100, Al Viro wrote: > > Where do I begin? > > * getname_kernel() is there for purpose > > * so's kern_path(), damnit > > Oh, and filename_lookup() *CAN* sleep, obviously. So that > GFP_ATOMIC above is completely pointless. > > > > + > > > + inode = d_backing_inode(kp.dentry); > > > + pidns_info->dev = (u32)inode->i_rdev; In the original variant of patchset it used to be ->i_sb->s_dev, which is also bloody strange - you are not asking filename_lookup() to follow symlinks, so you'd get that of whatever filesystem /proc/self/ns resides on. ->i_rdev use makes no sense whatsoever - it's a symlink and neither it nor its target are device nodes; ->i_rdev will be left zero for both. What data are you really trying to get there?