On Thu, Jan 18, 2024 at 03:06:53PM +0100, Markus Elfring wrote: > From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> > Date: Thu, 18 Jan 2024 14:57:21 +0100 > > * Omit an initialisation (for the variable “ret”) > which became unnecessary with this refactoring > because a memory allocation failure will be directly indicated > by a corresponding return statement in an if branch. > > * Move a call of the function “kstrdup” before two other statements. > > Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx> Thanks for you patch! I've decided not to apply it because I prefer having a single exit path for error handling, and it works as-is already. -Kees > --- > fs/pstore/ram_core.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/fs/pstore/ram_core.c b/fs/pstore/ram_core.c > index f1848cdd6d34..5047a8502e17 100644 > --- a/fs/pstore/ram_core.c > +++ b/fs/pstore/ram_core.c > @@ -586,21 +586,23 @@ struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size, > unsigned int memtype, u32 flags, char *label) > { > struct persistent_ram_zone *prz; > - int ret = -ENOMEM; > + int ret; > > prz = kzalloc(sizeof(struct persistent_ram_zone), GFP_KERNEL); > if (!prz) { > pr_err("failed to allocate persistent ram zone\n"); > - goto err; > + return ERR_PTR(-ENOMEM); > + } > + > + prz->label = kstrdup(label, GFP_KERNEL); > + if (!prz->label) { > + kfree(prz); > + return ERR_PTR(-ENOMEM); > } > > /* Initialize general buffer state. */ > raw_spin_lock_init(&prz->buffer_lock); > prz->flags = flags; > - prz->label = kstrdup(label, GFP_KERNEL); > - if (!prz->label) > - goto err; > - > ret = persistent_ram_buffer_map(start, size, prz, memtype); > if (ret) > goto err; > -- > 2.43.0 > -- Kees Cook