mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
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:
parent
d5f962fa26
commit
b2ca8bdff6
1 changed files with 14 additions and 20 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue