commit cfa1017e8fc0ed31fa60418363bf267f6fd37e5d
Author: Erez Zadok <[EMAIL PROTECTED]>
Date: Thu Dec 6 19:45:04 2007 -0500
Unionfs ODF: use krealloc() in create_parents()
Prevents compile error with CONFIG_SLUB:
$ make
fs/unionfs/copyup.c: In function 'create_parents':
fs/unionfs/copyup.c:694: error: 'malloc_sizes' undeclared (first use in this
function)
fs/unionfs/copyup.c:694: error: (Each undeclared identifier is reported only
once
CC: Jesse I Pollard <[EMAIL PROTECTED]>
Signed-off-by: Erez Zadok <[EMAIL PROTECTED]>
diff --git a/fs/unionfs/copyup.c b/fs/unionfs/copyup.c
index 2ea88d9..4b4dda4 100644
--- a/fs/unionfs/copyup.c
+++ b/fs/unionfs/copyup.c
@@ -678,22 +678,15 @@ struct dentry *create_parents(struct inode *dir, struct
dentry *dentry,
struct dentry *lower_dentry = NULL;
const char *childname;
unsigned int childnamelen;
- int old_kmalloc_size;
- int kmalloc_size;
- int num_dentry;
+ int nr_dentry;
int count = 0;
int old_bstart;
int old_bend;
struct dentry **path = NULL;
- struct dentry **tmp_path;
struct super_block *sb;
verify_locked(dentry);
- /* There is no sense allocating any less than the minimum. */
- kmalloc_size = malloc_sizes[0].cs_size;
- num_dentry = kmalloc_size / sizeof(struct dentry *);
-
err = is_robranch_super(dir->i_sb, bindex);
if (err) {
lower_dentry = ERR_PTR(err);
@@ -704,7 +697,10 @@ struct dentry *create_parents(struct inode *dir, struct
dentry *dentry,
old_bend = dbend(dentry);
lower_dentry = ERR_PTR(-ENOMEM);
- path = kzalloc(kmalloc_size, GFP_KERNEL);
+
+ /* There is no sense allocating any less than the minimum. */
+ nr_dentry = 1;
+ path = kmalloc(nr_dentry * sizeof(struct dentry *), GFP_KERNEL);
if (unlikely(!path))
goto out;
@@ -731,26 +727,22 @@ struct dentry *create_parents(struct inode *dir, struct
dentry *dentry,
lower_parent_dentry =
unionfs_lower_dentry_idx(parent_dentry, bindex);
- /* store the child dentry */
- path[count++] = child_dentry;
-
/* grow path table */
- if (count == num_dentry) {
- old_kmalloc_size = kmalloc_size;
- kmalloc_size *= 2;
- num_dentry = kmalloc_size / sizeof(struct dentry *);
+ if (count == nr_dentry) {
+ void *p;
- tmp_path = kzalloc(kmalloc_size, GFP_KERNEL);
- if (unlikely(!tmp_path)) {
+ nr_dentry *= 2;
+ p = krealloc(path, nr_dentry * sizeof(struct dentry *),
+ GFP_KERNEL);
+ if (unlikely(!p)) {
lower_dentry = ERR_PTR(-ENOMEM);
goto out;
}
- memcpy(tmp_path, path, old_kmalloc_size);
- kfree(path);
- path = tmp_path;
- tmp_path = NULL;
+ path = p;
}
+ /* store the child dentry */
+ path[count++] = child_dentry;
} while (!lower_parent_dentry);
count--;
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs