diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2008-02-23 15:14:28 (GMT) |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-03-19 10:55:46 (GMT) |
commit | a02f76c34d7d6d30b63ac64a8b34dea68593e8da (patch) | |
tree | 4186495ccb3d6ef3cec8b5f8cf964212f746ab55 /fs/super.c | |
parent | b4d232e65fa274a715dae39f77191071324e602a (diff) | |
download | linux-a02f76c34d7d6d30b63ac64a8b34dea68593e8da.tar.xz |
[PATCH] get stack footprint of pathname resolution back to relative sanity
Somebody had put struct nameidata in stack frame of link_path_walk().
Unfortunately, there are certain realities to deal with:
* It's in the middle of recursion. Depth is equal to the nesting
depth of symlinks, i.e. up to 8.
* struct namiedata is, even if one discards the intent junk,
at least 12 pointers + 5 ints.
* moreover, adding a stack frame is not free in that situation.
* there are fs methods called on top of that, and they also have
stack footprint.
* kernel stack is not infinite.
The thing is, even if one chooses to deal with -ESTALE that way (and it's
one hell of an overkill), the only thing that needs to be preserved is
vfsmount + dentry, not the entire struct nameidata.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/super.c')
0 files changed, 0 insertions, 0 deletions