Extended attributes are usually small, but could be up to 64k in size, so
use the most efficient method for doing the allocation.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
                return list_size;
        }
 
-       buf = kzalloc(list_size, GFP_KERNEL);
+       buf = kvzalloc(list_size, GFP_KERNEL);
        if (!buf)
                return -ENOMEM;
 
                if (size > value_size) {
                        void *new;
 
-                       new = krealloc(value, size, GFP_KERNEL);
+                       new = kvmalloc(size, GFP_KERNEL);
                        if (!new) {
                                error = -ENOMEM;
                                break;
                        }
+                       kvfree(value);
                        value = new;
                        value_size = size;
                        goto retry;
                        error = 0;
                }
        }
-       kfree(value);
+       kvfree(value);
 out:
-       kfree(buf);
+       kvfree(buf);
        return error;
 }