summaryrefslogtreecommitdiff
path: root/fs/dlm/dir.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2008-01-26 08:03:59 +0300
committerDavid Teigland <teigland@redhat.com>2008-02-04 10:30:19 +0300
commit043b19cdc081f586a8f4e1c93ce6c03b63c26284 (patch)
tree11101abb0a5716c51ddae9bd7009718030efe510 /fs/dlm/dir.c
parenta9cc9159281d44754f621f75d4efad0076b29db4 (diff)
downloadlinux-043b19cdc081f586a8f4e1c93ce6c03b63c26284.tar.xz
dlm: fix dlm_dir_lookup() handling of too long names
... those can happen and BUG() from DLM_ASSERT() in allocate_direntry() is not a good way to handle them. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David Teigland <teigland@redhat.com>
Diffstat (limited to 'fs/dlm/dir.c')
-rw-r--r--fs/dlm/dir.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/dlm/dir.c b/fs/dlm/dir.c
index 831050e5bfd5..85defeb64df4 100644
--- a/fs/dlm/dir.c
+++ b/fs/dlm/dir.c
@@ -319,6 +319,9 @@ static int get_entry(struct dlm_ls *ls, int nodeid, char *name,
write_unlock(&ls->ls_dirtbl[bucket].lock);
+ if (namelen > DLM_RESNAME_MAXLEN)
+ return -EINVAL;
+
de = kzalloc(sizeof(struct dlm_direntry) + namelen, GFP_KERNEL);
if (!de)
return -ENOMEM;