device property: Reuse property_entry_free_data()

Reuse property_entry_free_data() in property_entry_copy_data()
to make code slightly cleaner.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Andy Shevchenko 2018-01-22 16:21:38 +02:00 committed by Greg Kroah-Hartman
parent d5f962fa26
commit b2ca8bdff6
1 changed files with 14 additions and 20 deletions

View File

@ -742,34 +742,24 @@ static int property_entry_copy_data(struct property_entry *dst,
{
int error;
dst->name = kstrdup(src->name, GFP_KERNEL);
if (!dst->name)
return -ENOMEM;
if (src->is_array) {
if (!src->length) {
error = -ENODATA;
goto out_free_name;
}
if (!src->length)
return -ENODATA;
if (src->is_string) {
error = property_copy_string_array(dst, src);
if (error)
goto out_free_name;
return error;
} else {
dst->pointer.raw_data = kmemdup(src->pointer.raw_data,
src->length, GFP_KERNEL);
if (!dst->pointer.raw_data) {
error = -ENOMEM;
goto out_free_name;
}
if (!dst->pointer.raw_data)
return -ENOMEM;
}
} else if (src->is_string) {
dst->value.str = kstrdup(src->value.str, GFP_KERNEL);
if (!dst->value.str && src->value.str) {
error = -ENOMEM;
goto out_free_name;
}
if (!dst->value.str && src->value.str)
return -ENOMEM;
} else {
dst->value.raw_data = src->value.raw_data;
}
@ -778,11 +768,15 @@ static int property_entry_copy_data(struct property_entry *dst,
dst->is_array = src->is_array;
dst->is_string = src->is_string;
dst->name = kstrdup(src->name, GFP_KERNEL);
if (!dst->name)
goto out_free_data;
return 0;
out_free_name:
kfree(dst->name);
return error;
out_free_data:
property_entry_free_data(dst);
return -ENOMEM;
}
/**