[lkml]   [2015]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCHSET v2] ->follow_link() without dropping from RCU mode
On Wed, Dec 09, 2015 at 09:24:32AM -0800, Linus Torvalds wrote:

> That's because of the HIGHMEM crap that you removed. Without
> highmem, the page data address specifies the page fine without any
> cookie.
> - overlayfs, which uses it to create a temporary data storage.
> Why? Mainly because it wants to hide the cookie in there. D'oh!

Not really - it also wants to stash a way to underlying inode in there.
See below...

> - proc, which uses it to save the proc_dir_entry
> Why? The reason seems to be that we don't call put_link() with the
> dentry that get_link got, so it can't look it up the sane way.

What's more, that dentry might very well have gone negative by that
point. Think what happens if, during the symlink traversal, we run
into the hard "restart from scratch in non-RCU mode". We'll need to
do ->put_link() on everything we have in stack. Regardless of what
might've happened to dentries/inodes of symlinks involved - all we
are really promised is that RCU-delayed parts of their destruction hadn't
been entered yet.

Note, BTW, that *all* ->put_link() instances ignore the inode argument
and I seriously considered dropping it completely.

 \ /
  Last update: 2015-12-09 19:41    [W:0.084 / U:7.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site