Comment 11 for bug 1532145

Revision history for this message
Colin Ian King (colin-king) wrote :

bisected: 4bacc9c9234c7c8eec44f5ed4e960d9f96fa0f01 is the first bad commit

commit 4bacc9c9234c7c8eec44f5ed4e960d9f96fa0f01
Author: David Howells <email address hidden>
Date: Thu Jun 18 14:32:31 2015 +0100

    overlayfs: Make f_path always point to the overlay and f_inode to the underlay

    Make file->f_path always point to the overlay dentry so that the path in
    /proc/pid/fd is correct and to ensure that label-based LSMs have access to the
    overlay as well as the underlay (path-based LSMs probably don't need it).

    Using my union testsuite to set things up, before the patch I see:

     [root@andromeda union-testsuite]# bash 5</mnt/a/foo107
     [root@andromeda union-testsuite]# ls -l /proc/$$/fd/
     ...
     lr-x------. 1 root root 64 Jun 5 14:38 5 -> /a/foo107
     [root@andromeda union-testsuite]# stat /mnt/a/foo107
     ...
     Device: 23h/35d Inode: 13381 Links: 1
     ...
     [root@andromeda union-testsuite]# stat -L /proc/$$/fd/5
     ...
     Device: 23h/35d Inode: 13381 Links: 1
     ...

    After the patch:

     [root@andromeda union-testsuite]# bash 5</mnt/a/foo107
     [root@andromeda union-testsuite]# ls -l /proc/$$/fd/
     ...
     lr-x------. 1 root root 64 Jun 5 14:22 5 -> /mnt/a/foo107
     [root@andromeda union-testsuite]# stat /mnt/a/foo107
     ...
     Device: 23h/35d Inode: 40346 Links: 1
     ...
     [root@andromeda union-testsuite]# stat -L /proc/$$/fd/5
     ...
     Device: 23h/35d Inode: 40346 Links: 1
     ...

    Note the change in where /proc/$$/fd/5 points to in the ls command. It was
    pointing to /a/foo107 (which doesn't exist) and now points to /mnt/a/foo107
    (which is correct).

    The inode accessed, however, is the lower layer. The union layer is on device
    25h/37d and the upper layer on 24h/36d.

    Signed-off-by: David Howells <email address hidden>
    Signed-off-by: Al Viro <email address hidden>