From 2be8b5cee9e9a73add9195901c0f680755de0022 Mon Sep 17 00:00:00 2001 From: yangsheng <yangsheng> Date: Fri, 31 Oct 2008 07:59:50 +0000 Subject: [PATCH] Branch HEAD b=17379 i=Brian(LLNL), johann Set recursive symlink depth to 5 when kernel has 4K stack. --- lustre/llite/symlink.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lustre/llite/symlink.c b/lustre/llite/symlink.c index 5b2fe077ec..918e2e9b5b 100644 --- a/lustre/llite/symlink.c +++ b/lustre/llite/symlink.c @@ -165,10 +165,22 @@ static LL_FOLLOW_LINK_RETURN_TYPE ll_follow_link(struct dentry *dentry, #endif CDEBUG(D_VFSTRACE, "VFS Op\n"); +#if THREAD_SIZE < 8192 + /* + * We set the limits recursive symlink to 5 + * instead of default 8 when kernel has 4k stack + * to prevent stack overflow. + */ + if (current->link_count >= 5) { + rc = -ELOOP; + GOTO(out_release, rc); + } +#endif down(&lli->lli_size_sem); rc = ll_readlink_internal(inode, &request, &symname); up(&lli->lli_size_sem); if (rc) { +out_release: path_release(nd); /* Kernel assumes that ->follow_link() releases nameidata on error */ GOTO(out, rc); -- GitLab