mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
lib: string_helpers: provide kfree_strarray()
There's a common pattern of dynamically allocating an array of char pointers and then also dynamically allocating each string in this array. Provide a helper for freeing such a string array with one call. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
parent
3795d7cc4f
commit
0fd16012ad
2 changed files with 25 additions and 0 deletions
|
@ -94,4 +94,6 @@ char *kstrdup_quotable(const char *src, gfp_t gfp);
|
|||
char *kstrdup_quotable_cmdline(struct task_struct *task, gfp_t gfp);
|
||||
char *kstrdup_quotable_file(struct file *file, gfp_t gfp);
|
||||
|
||||
void kfree_strarray(char **array, size_t n);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -649,3 +649,26 @@ char *kstrdup_quotable_file(struct file *file, gfp_t gfp)
|
|||
return pathname;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kstrdup_quotable_file);
|
||||
|
||||
/**
|
||||
* kfree_strarray - free a number of dynamically allocated strings contained
|
||||
* in an array and the array itself
|
||||
*
|
||||
* @array: Dynamically allocated array of strings to free.
|
||||
* @n: Number of strings (starting from the beginning of the array) to free.
|
||||
*
|
||||
* Passing a non-NULL @array and @n == 0 as well as NULL @array are valid
|
||||
* use-cases. If @array is NULL, the function does nothing.
|
||||
*/
|
||||
void kfree_strarray(char **array, size_t n)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!array)
|
||||
return;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
kfree(array[i]);
|
||||
kfree(array);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kfree_strarray);
|
||||
|
|
Loading…
Reference in a new issue