diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2008-01-26 00:03:59 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2008-02-04 02:30:19 -0500 |
commit | 043b19cdc081f586a8f4e1c93ce6c03b63c26284 (patch) | |
tree | 11101abb0a5716c51ddae9bd7009718030efe510 | |
parent | a9cc9159281d44754f621f75d4efad0076b29db4 (diff) |
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>
-rw-r--r-- | fs/dlm/dir.c | 3 |
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, | |||
319 | 319 | ||
320 | write_unlock(&ls->ls_dirtbl[bucket].lock); | 320 | write_unlock(&ls->ls_dirtbl[bucket].lock); |
321 | 321 | ||
322 | if (namelen > DLM_RESNAME_MAXLEN) | ||
323 | return -EINVAL; | ||
324 | |||
322 | de = kzalloc(sizeof(struct dlm_direntry) + namelen, GFP_KERNEL); | 325 | de = kzalloc(sizeof(struct dlm_direntry) + namelen, GFP_KERNEL); |
323 | if (!de) | 326 | if (!de) |
324 | return -ENOMEM; | 327 | return -ENOMEM; |