@@ -2298,11 +2298,15 @@ int ocfs2_orphan_del(struct ocfs2_super *osb,
{
int namelen = dio ? OCFS2_DIO_ORPHAN_PREFIX_LEN + OCFS2_ORPHAN_NAMELEN :
OCFS2_ORPHAN_NAMELEN;
- char name[namelen + 1];
+ char *name;
struct ocfs2_dinode *orphan_fe;
int status = 0;
struct ocfs2_dir_lookup_result lookup = { NULL, };
+ name = kmalloc(namelen + 1, GFP_NOFS);
+ if (!name)
+ goto leave;
+
if (dio) {
status = snprintf(name, OCFS2_DIO_ORPHAN_PREFIX_LEN + 1, "%s",
OCFS2_DIO_ORPHAN_PREFIX);
@@ -2357,6 +2361,7 @@ int ocfs2_orphan_del(struct ocfs2_super *osb,
ocfs2_journal_dirty(handle, orphan_dir_bh);
leave:
+ kfree(name);
ocfs2_free_dir_lookup_result(&lookup);
if (status)