linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@linux.ibm.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Rich Felker <dalias@libc.org>,
	"linux-ia64@vger.kernel.org" <linux-ia64@vger.kernel.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	the arch/x86 maintainers <x86@kernel.org>,
	linux-mips@vger.kernel.org, Max Filippov <jcmvbkbc@gmail.com>,
	Guo Ren <guoren@kernel.org>,
	sparclinux <sparclinux@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>,
	linux-s390 <linux-s390@vger.kernel.org>,
	linux-c6x-dev@linux-c6x.org,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Richard Weinberger <richard@nod.at>,
	Linux-sh list <linux-sh@vger.kernel.org>,
	Russell King <linux@armlinux.org.uk>,
	kasan-dev@googlegroups.com, Mark Salter <msalter@redhat.com>,
	Dennis Zhou <dennis@kernel.org>, Matt Turner <mattst88@gmail.com>,
	arcml <linux-snps-arc@lists.infradead.org>,
	"moderated list:H8/300 ARCHITECTURE"
	<uclinux-h8-devel@lists.sourceforge.jp>,
	Petr Mladek <pmladek@suse.com>,
	linux-xtensa@linux-xtensa.org,
	alpha <linux-alpha@vger.kernel.org>,
	linux-um@lists.infradead.org,
	linux-m68k <linux-m68k@lists.linux-m68k.org>,
	Rob Herring <robh+dt@kernel.org>,
	Greentime Hu <green.hu@gmail.com>,
	xen-devel@lists.xenproject.org, Stafford Horne <shorne@gmail.com>,
	Guan Xuetao <gxt@pku.edu.cn>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Michal Simek <monstr@monstr.eu>, Tony Luck <tony.luck@intel.com>,
	Linux MM <linux-mm@kvack.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	USB list <linux-usb@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Paul Burton <paul.burton@mips.com>,
	Vineet Gupta <vgupta@synopsys.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Andrew Morton <akpm@linux-foundation.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	"David S. Miller" <davem@davemloft.net>,
	Openrisc <openrisc@lists.librecores.org>
Subject: Re: [PATCH 19/21] treewide: add checks for the return value of memblock_alloc*()
Date: Wed, 16 Jan 2019 17:13:49 +0200	[thread overview]
Message-ID: <20190116151348.GD6643@rapoport-lnx> (raw)
In-Reply-To: <CAMuHMdWKPj-2Let44rmaVwh-b6kkGg+0cFPQ-+3k9LP86pB7NA@mail.gmail.com>

On Wed, Jan 16, 2019 at 03:27:35PM +0100, Geert Uytterhoeven wrote:
> Hi Mike,
> 
> On Wed, Jan 16, 2019 at 2:46 PM Mike Rapoport <rppt@linux.ibm.com> wrote:
> > Add check for the return value of memblock_alloc*() functions and call
> > panic() in case of error.
> > The panic message repeats the one used by panicing memblock allocators with
> > adjustment of parameters to include only relevant ones.
> >
> > The replacement was mostly automated with semantic patches like the one
> > below with manual massaging of format strings.
> >
> > @@
> > expression ptr, size, align;
> > @@
> > ptr = memblock_alloc(size, align);
> > + if (!ptr)
> > +       panic("%s: Failed to allocate %lu bytes align=0x%lx\n", __func__,
> 
> In general, you want to use %zu for size_t
> 
> > size, align);
> >
> > Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
> 
> Thanks for your patch!
> 
> >  74 files changed, 415 insertions(+), 29 deletions(-)
> 
> I'm wondering if this is really an improvement?

From memblock perspective it's definitely an improvement :)

git diff --stat mmotm/master include/linux/memblock.h mm/memblock.c
 include/linux/memblock.h |  59 ++---------
 mm/memblock.c            | 249 ++++++++++++++++-------------------------------
 2 files changed, 90 insertions(+), 218 deletions(-)

> For the normal memory allocator, the trend is to remove printing of errors
> from all callers, as the core takes care of that.

It's more about allocation errors handling than printing of the errors.
Indeed, there is not much that can be done if an early allocation fails,
but I believe having an explicit pattern

	ptr = alloc();
	if (!ptr)
		do_something_about_it();

is clearer than relying on the allocator to panic().

Besides, the diversity of panic and nopanic variants creates a confusion
and I've caught several places that call nopanic variant and do not check
its return value.
 
> > --- a/arch/alpha/kernel/core_marvel.c
> > +++ b/arch/alpha/kernel/core_marvel.c
> > @@ -83,6 +83,9 @@ mk_resource_name(int pe, int port, char *str)
> >
> >         sprintf(tmp, "PCI %s PE %d PORT %d", str, pe, port);
> >         name = memblock_alloc(strlen(tmp) + 1, SMP_CACHE_BYTES);
> > +       if (!name)
> > +               panic("%s: Failed to allocate %lu bytes\n", __func__,
> 
> %zu, as strlen() returns size_t.

Thanks for spotting it, will fix.

> > +                     strlen(tmp) + 1);
> >         strcpy(name, tmp);
> >
> >         return name;
> > @@ -118,6 +121,9 @@ alloc_io7(unsigned int pe)
> >         }
> >
> >         io7 = memblock_alloc(sizeof(*io7), SMP_CACHE_BYTES);
> > +       if (!io7)
> > +               panic("%s: Failed to allocate %lu bytes\n", __func__,
> 
> %zu, as sizeof() returns size_t.
> Probably there are more. Yes, it's hard to get them right in all callers.

Yeah :)
 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> -- 
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
> 

-- 
Sincerely yours,
Mike.


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-01-16 15:14 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-16 13:44 [PATCH 00/21] Refine memblock API Mike Rapoport
2019-01-16 13:44 ` [PATCH 01/21] openrisc: prefer memblock APIs returning virtual address Mike Rapoport
2019-01-16 13:44 ` [PATCH 03/21] memblock: replace memblock_alloc_base(ANYWHERE) with memblock_phys_alloc Mike Rapoport
2019-01-16 13:44 ` [PATCH 04/21] memblock: drop memblock_alloc_base_nid() Mike Rapoport
2019-01-16 13:44 ` [PATCH 05/21] memblock: emphasize that memblock_alloc_range() returns a physical address Mike Rapoport
2019-01-16 13:44 ` [PATCH 06/21] memblock: memblock_phys_alloc_try_nid(): don't panic Mike Rapoport
2019-01-16 13:44 ` [PATCH 07/21] memblock: memblock_phys_alloc(): " Mike Rapoport
2019-01-16 13:44 ` [PATCH 08/21] memblock: drop __memblock_alloc_base() Mike Rapoport
2019-01-16 15:15   ` Rob Herring
2019-01-16 13:44 ` [PATCH 09/21] memblock: drop memblock_alloc_base() Mike Rapoport
2019-01-16 13:44 ` [PATCH 10/21] memblock: refactor internal allocation functions Mike Rapoport
2019-01-16 13:44 ` [PATCH 11/21] memblock: make memblock_find_in_range_node() and choose_memblock_flags() static Mike Rapoport
2019-01-16 13:44 ` [PATCH 12/21] arch: use memblock_alloc() instead of memblock_alloc_from(size, align, 0) Mike Rapoport
2019-01-18 17:53   ` Paul Burton
2019-01-16 13:44 ` [PATCH 13/21] arch: don't memset(0) memory returned by memblock_alloc() Mike Rapoport
2019-01-16 14:17   ` Geert Uytterhoeven
2019-01-16 13:44 ` [PATCH 14/21] ia64: add checks for the return value of memblock_alloc*() Mike Rapoport
2019-01-16 13:44 ` [PATCH 15/21] sparc: " Mike Rapoport
2019-01-16 17:21   ` David Miller
2019-01-16 13:44 ` [PATCH 16/21] mm/percpu: " Mike Rapoport
2019-01-16 13:44 ` [PATCH 17/21] init/main: " Mike Rapoport
2019-01-16 13:44 ` [PATCH 18/21] swiotlb: " Mike Rapoport
2019-01-16 13:44 ` [PATCH 19/21] treewide: " Mike Rapoport
2019-01-16 14:27   ` Geert Uytterhoeven
2019-01-16 15:13     ` Mike Rapoport [this message]
2019-01-16 14:32   ` [Xen-devel] " Juergen Gross
2019-01-16 15:18   ` Rob Herring
2019-01-17  7:06   ` Guo Ren
2019-01-18  8:43   ` Heiko Carstens
2019-01-18 18:02   ` Paul Burton
2019-01-16 13:44 ` [PATCH 20/21] memblock: memblock_alloc_try_nid: don't panic Mike Rapoport
2019-01-16 13:44 ` [PATCH 21/21] memblock: drop memblock_alloc_*_nopanic() variants Mike Rapoport
2019-01-17  9:28   ` Petr Mladek
2019-01-18  8:42   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190116151348.GD6643@rapoport-lnx \
    --to=rppt@linux.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=catalin.marinas@arm.com \
    --cc=dalias@libc.org \
    --cc=davem@davemloft.net \
    --cc=dennis@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=geert@linux-m68k.org \
    --cc=green.hu@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=guoren@kernel.org \
    --cc=gxt@pku.edu.cn \
    --cc=hch@lst.de \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-c6x-dev@linux-c6x.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-snps-arc@lists.infradead.org \
    --cc=linux-um@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linux@armlinux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mattst88@gmail.com \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=msalter@redhat.com \
    --cc=openrisc@lists.librecores.org \
    --cc=paul.burton@mips.com \
    --cc=pmladek@suse.com \
    --cc=richard@nod.at \
    --cc=robh+dt@kernel.org \
    --cc=shorne@gmail.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=tony.luck@intel.com \
    --cc=uclinux-h8-devel@lists.sourceforge.jp \
    --cc=vgupta@synopsys.com \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).