Re: [PATCHSET v2] ->follow_link() without dropping from RCU mode

From: Linus Torvalds
Date: Wed Dec 09 2015 - 12:24:37 EST


On Tue, Dec 8, 2015 at 9:32 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
>
> Any help with review and testing would be welcome. FWIW, it seems to survive
> the beating here.

It looks ok to me, but I *hate* that "cookie" thing we have. And I
don't actually see any reason for it.

Every single user except for a couple seem to just put the resulting
symlink address into the cookie (and then put_link() will kfree it or
put_page() it). And the calling convention would be *so* much clearer
if we just made things be

char *get_link(dentry, inode);
put_link(dentry, inode, char *);

and get rid of that cookie entirely.

The only users of the cookie seem to be

- we currently use it for the page pointer vs the page data address.

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!

- 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.

In other words, as far as I can tell, the cookie is just garbage now.

But maybe I missed something.

Other than that, I like the series. And I realize that technically the
"cookie removal" would be a separate thing, but since you're changing
the calling convention from "follow_link()" to "get_link()" in this
series, I _really_ think that as part of that calling convention
change we should just get rid of the cookie, rather than have
*another* calling convention change later.

Hmm?

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/