[PATCH 1/3] powerpc/of: split out new_property() for reusing

Christophe Leroy christophe.leroy at c-s.fr
Fri Feb 28 17:47:59 AEDT 2020



Le 28/02/2020 à 06:53, Pingfan Liu a écrit :
> Since new_property() is used in several calling sites, splitting it out for
> reusing.
> 
> To ease the review, although the split out part has coding style issue,
> keeping it untouched and fixed in next patch.

The moved function fits in one screen. I don't think it is worth 
splitting out for coding style that applies on the new lines only. You 
can squash the two patches, it will still be easy to review.

> 
> Signed-off-by: Pingfan Liu <kernelfans at gmail.com>
> To: linuxppc-dev at lists.ozlabs.org
> Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> Cc: Paul Mackerras <paulus at samba.org>
> Cc: Michael Ellerman <mpe at ellerman.id.au>
> Cc: Hari Bathini <hbathini at linux.ibm.com>
> Cc: Aneesh Kumar K.V <aneesh.kumar at linux.ibm.com>
> Cc: Oliver O'Halloran <oohall at gmail.com>
> Cc: Dan Williams <dan.j.williams at intel.com>
> Cc: kexec at lists.infradead.org
> ---
>   arch/powerpc/include/asm/prom.h           |  2 ++
>   arch/powerpc/kernel/Makefile              |  2 +-
>   arch/powerpc/kernel/of_property.c         | 32 +++++++++++++++++++++++++++++++
>   arch/powerpc/mm/drmem.c                   | 26 -------------------------
>   arch/powerpc/platforms/pseries/reconfig.c | 26 -------------------------
>   5 files changed, 35 insertions(+), 53 deletions(-)
>   create mode 100644 arch/powerpc/kernel/of_property.c
> 
> diff --git a/arch/powerpc/include/asm/prom.h b/arch/powerpc/include/asm/prom.h
> index 94e3fd5..02f7b1b 100644
> --- a/arch/powerpc/include/asm/prom.h
> +++ b/arch/powerpc/include/asm/prom.h
> @@ -90,6 +90,8 @@ struct of_drc_info {
>   extern int of_read_drc_info_cell(struct property **prop,
>   			const __be32 **curval, struct of_drc_info *data);
>   
> +extern struct property *new_property(const char *name, const int length,
> +		const unsigned char *value, struct property *last);

Don't add useless 'extern' keyword.

>   
>   /*
>    * There are two methods for telling firmware what our capabilities are.
> diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
> index 157b014..23375fd 100644
> --- a/arch/powerpc/kernel/Makefile
> +++ b/arch/powerpc/kernel/Makefile
> @@ -47,7 +47,7 @@ obj-y				:= cputable.o ptrace.o syscalls.o \
>   				   signal.o sysfs.o cacheinfo.o time.o \
>   				   prom.o traps.o setup-common.o \
>   				   udbg.o misc.o io.o misc_$(BITS).o \
> -				   of_platform.o prom_parse.o
> +				   of_platform.o prom_parse.o of_property.o
>   obj-$(CONFIG_PPC64)		+= setup_64.o sys_ppc32.o \
>   				   signal_64.o ptrace32.o \
>   				   paca.o nvram_64.o firmware.o note.o
> diff --git a/arch/powerpc/kernel/of_property.c b/arch/powerpc/kernel/of_property.c
> new file mode 100644
> index 0000000..e56c832
> --- /dev/null
> +++ b/arch/powerpc/kernel/of_property.c
> @@ -0,0 +1,32 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +#include <linux/of.h>
> +#include <linux/string.h>
> +#include <linux/kernel.h>
> +#include <linux/slab.h>
> +
> +struct property *new_property(const char *name, const int length,
> +				     const unsigned char *value, struct property *last)
> +{
> +	struct property *new = kzalloc(sizeof(*new), GFP_KERNEL);
> +
> +	if (!new)
> +		return NULL;
> +
> +	if (!(new->name = kstrdup(name, GFP_KERNEL)))
> +		goto cleanup;
> +	if (!(new->value = kmalloc(length + 1, GFP_KERNEL)))
> +		goto cleanup;
> +
> +	memcpy(new->value, value, length);
> +	*(((char *)new->value) + length) = 0;
> +	new->length = length;
> +	new->next = last;
> +	return new;
> +
> +cleanup:
> +	kfree(new->name);
> +	kfree(new->value);
> +	kfree(new);
> +	return NULL;
> +}
> +
> diff --git a/arch/powerpc/mm/drmem.c b/arch/powerpc/mm/drmem.c
> index 85b088a..888227e 100644
> --- a/arch/powerpc/mm/drmem.c
> +++ b/arch/powerpc/mm/drmem.c
> @@ -99,32 +99,6 @@ static void init_drconf_v2_cell(struct of_drconf_cell_v2 *dr_cell,
>   
>   extern int test_hotplug;
>   
> -static struct property *new_property(const char *name, const int length,
> -				     const unsigned char *value, struct property *last)
> -{
> -	struct property *new = kzalloc(sizeof(*new), GFP_KERNEL);
> -
> -	if (!new)
> -		return NULL;
> -
> -	if (!(new->name = kstrdup(name, GFP_KERNEL)))
> -		goto cleanup;
> -	if (!(new->value = kmalloc(length + 1, GFP_KERNEL)))
> -		goto cleanup;
> -
> -	memcpy(new->value, value, length);
> -	*(((char *)new->value) + length) = 0;
> -	new->length = length;
> -	new->next = last;
> -	return new;
> -
> -cleanup:
> -	kfree(new->name);
> -	kfree(new->value);
> -	kfree(new);
> -	return NULL;
> -}
> -
>   static int drmem_update_dt_v2(struct device_node *memory,
>   			      struct property *prop)
>   {
> diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
> index 7f7369f..8e5a2ba 100644
> --- a/arch/powerpc/platforms/pseries/reconfig.c
> +++ b/arch/powerpc/platforms/pseries/reconfig.c
> @@ -165,32 +165,6 @@ static char * parse_next_property(char *buf, char *end, char **name, int *length
>   	return tmp;
>   }
>   
> -static struct property *new_property(const char *name, const int length,
> -				     const unsigned char *value, struct property *last)
> -{
> -	struct property *new = kzalloc(sizeof(*new), GFP_KERNEL);
> -
> -	if (!new)
> -		return NULL;
> -
> -	if (!(new->name = kstrdup(name, GFP_KERNEL)))
> -		goto cleanup;
> -	if (!(new->value = kmalloc(length + 1, GFP_KERNEL)))
> -		goto cleanup;
> -
> -	memcpy(new->value, value, length);
> -	*(((char *)new->value) + length) = 0;
> -	new->length = length;
> -	new->next = last;
> -	return new;
> -
> -cleanup:
> -	kfree(new->name);
> -	kfree(new->value);
> -	kfree(new);
> -	return NULL;
> -}
> -
>   static int do_add_node(char *buf, size_t bufsize)
>   {
>   	char *path, *end, *name;
> 

Christophe


More information about the Linuxppc-dev mailing list