mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02: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:
@@ -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_cmdline(struct task_struct *task, gfp_t gfp);
|
||||||
char *kstrdup_quotable_file(struct file *file, gfp_t gfp);
|
char *kstrdup_quotable_file(struct file *file, gfp_t gfp);
|
||||||
|
|
||||||
|
void kfree_strarray(char **array, size_t n);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -649,3 +649,26 @@ char *kstrdup_quotable_file(struct file *file, gfp_t gfp)
|
|||||||
return pathname;
|
return pathname;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kstrdup_quotable_file);
|
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);
|
||||||
|
Reference in New Issue
Block a user