All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] s390: kernel: no need to check return value of debugfs_create functions
@ 2019-01-22 15:21 Greg Kroah-Hartman
  2019-01-22 16:24 ` Heiko Carstens
  2019-01-25  8:48 ` Heiko Carstens
  0 siblings, 2 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-01-22 15:21 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, Martin Schwidefsky, Heiko Carstens,
	Kees Cook, Christian Borntraeger, Hendrik Brueckner, linux-s390

When calling debugfs functions, there is no need to ever check the
return value.  The function can work or not, but the code logic should
never do something different based on this.

Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Cc: linux-s390@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/s390/kernel/debug.c    | 6 ------
 arch/s390/kernel/kdebugfs.c | 2 --
 arch/s390/kernel/sysinfo.c  | 2 --
 3 files changed, 10 deletions(-)

diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c
index d374f9b218b4..0ebf08c3b35e 100644
--- a/arch/s390/kernel/debug.c
+++ b/arch/s390/kernel/debug.c
@@ -1056,12 +1056,6 @@ int debug_register_view(debug_info_t *id, struct debug_view *view)
 		mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
 	pde = debugfs_create_file(view->name, mode, id->debugfs_root_entry,
 				  id, &debug_file_ops);
-	if (!pde) {
-		pr_err("Registering view %s/%s failed due to out of "
-		       "memory\n", id->name, view->name);
-		rc = -1;
-		goto out;
-	}
 	spin_lock_irqsave(&id->lock, flags);
 	for (i = 0; i < DEBUG_MAX_VIEWS; i++) {
 		if (!id->views[i])
diff --git a/arch/s390/kernel/kdebugfs.c b/arch/s390/kernel/kdebugfs.c
index 2c46bd6c6fd2..33130c7daf55 100644
--- a/arch/s390/kernel/kdebugfs.c
+++ b/arch/s390/kernel/kdebugfs.c
@@ -9,8 +9,6 @@ EXPORT_SYMBOL(arch_debugfs_dir);
 static int __init arch_kdebugfs_init(void)
 {
 	arch_debugfs_dir = debugfs_create_dir("s390", NULL);
-	if (IS_ERR(arch_debugfs_dir))
-		arch_debugfs_dir = NULL;
 	return 0;
 }
 postcore_initcall(arch_kdebugfs_init);
diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
index 12f80d1f0415..2ac3c9b56a13 100644
--- a/arch/s390/kernel/sysinfo.c
+++ b/arch/s390/kernel/sysinfo.c
@@ -545,8 +545,6 @@ static __init int stsi_init_debugfs(void)
 	int lvl, i;
 
 	stsi_root = debugfs_create_dir("stsi", arch_debugfs_dir);
-	if (IS_ERR_OR_NULL(stsi_root))
-		return 0;
 	lvl = stsi(NULL, 0, 0, 0);
 	if (lvl > 0)
 		stsi_0_0_0 = lvl;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] s390: kernel: no need to check return value of debugfs_create functions
  2019-01-22 15:21 [PATCH] s390: kernel: no need to check return value of debugfs_create functions Greg Kroah-Hartman
@ 2019-01-22 16:24 ` Heiko Carstens
  2019-01-22 16:33   ` Greg Kroah-Hartman
  2019-01-25  8:48 ` Heiko Carstens
  1 sibling, 1 reply; 5+ messages in thread
From: Heiko Carstens @ 2019-01-22 16:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, Martin Schwidefsky, Kees Cook,
	Christian Borntraeger, Hendrik Brueckner, linux-s390

On Tue, Jan 22, 2019 at 04:21:02PM +0100, Greg Kroah-Hartman wrote:
> When calling debugfs functions, there is no need to ever check the
> return value.  The function can work or not, but the code logic should
> never do something different based on this.
> 
> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
> Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
> Cc: linux-s390@vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
>  arch/s390/kernel/debug.c    | 6 ------
>  arch/s390/kernel/kdebugfs.c | 2 --
>  arch/s390/kernel/sysinfo.c  | 2 --
>  3 files changed, 10 deletions(-)
> diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
> index 12f80d1f0415..2ac3c9b56a13 100644
> --- a/arch/s390/kernel/sysinfo.c
> +++ b/arch/s390/kernel/sysinfo.c
> @@ -545,8 +545,6 @@ static __init int stsi_init_debugfs(void)
>  	int lvl, i;
> 
>  	stsi_root = debugfs_create_dir("stsi", arch_debugfs_dir);
> -	if (IS_ERR_OR_NULL(stsi_root))
> -		return 0;

No objections, however will you also change the odd behaviour that
e.g. debugfs_create_file() returns -ENODEV instead of (the expected)
NULL pointer if CONFIG_DEBUGFS is disabled?

I do remember this since it caused at least one crash ;)

19cdd08ba155 ("[S390] qdio: fix broken pointer in case of CONFIG_DEBUG_FS is disabled").


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] s390: kernel: no need to check return value of debugfs_create functions
  2019-01-22 16:24 ` Heiko Carstens
@ 2019-01-22 16:33   ` Greg Kroah-Hartman
  2019-01-23  9:35     ` Heiko Carstens
  0 siblings, 1 reply; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-01-22 16:33 UTC (permalink / raw)
  To: Heiko Carstens
  Cc: linux-kernel, Martin Schwidefsky, Kees Cook,
	Christian Borntraeger, Hendrik Brueckner, linux-s390

On Tue, Jan 22, 2019 at 05:24:54PM +0100, Heiko Carstens wrote:
> On Tue, Jan 22, 2019 at 04:21:02PM +0100, Greg Kroah-Hartman wrote:
> > When calling debugfs functions, there is no need to ever check the
> > return value.  The function can work or not, but the code logic should
> > never do something different based on this.
> > 
> > Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
> > Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
> > Cc: Kees Cook <keescook@chromium.org>
> > Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> > Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
> > Cc: linux-s390@vger.kernel.org
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > ---
> >  arch/s390/kernel/debug.c    | 6 ------
> >  arch/s390/kernel/kdebugfs.c | 2 --
> >  arch/s390/kernel/sysinfo.c  | 2 --
> >  3 files changed, 10 deletions(-)
> > diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
> > index 12f80d1f0415..2ac3c9b56a13 100644
> > --- a/arch/s390/kernel/sysinfo.c
> > +++ b/arch/s390/kernel/sysinfo.c
> > @@ -545,8 +545,6 @@ static __init int stsi_init_debugfs(void)
> >  	int lvl, i;
> > 
> >  	stsi_root = debugfs_create_dir("stsi", arch_debugfs_dir);
> > -	if (IS_ERR_OR_NULL(stsi_root))
> > -		return 0;
> 
> No objections, however will you also change the odd behaviour that
> e.g. debugfs_create_file() returns -ENODEV instead of (the expected)
> NULL pointer if CONFIG_DEBUGFS is disabled?

Nope.  That is intentional.

> I do remember this since it caused at least one crash ;)

Which is why you shouldn't care about the return value of these
functions :)

> 19cdd08ba155 ("[S390] qdio: fix broken pointer in case of CONFIG_DEBUG_FS is disabled").

Odd, what crashes when passed an error pointer?  What was someone trying
to do with those pointers?  The only thing you can do with a return
value from a debugfs function is to pass it back into another debugfs
call.  Sounds like someone wasn't doing that :(

Given that that patch was from 2.6.29, I think we are safe...

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] s390: kernel: no need to check return value of debugfs_create functions
  2019-01-22 16:33   ` Greg Kroah-Hartman
@ 2019-01-23  9:35     ` Heiko Carstens
  0 siblings, 0 replies; 5+ messages in thread
From: Heiko Carstens @ 2019-01-23  9:35 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, Martin Schwidefsky, Kees Cook,
	Christian Borntraeger, Hendrik Brueckner, linux-s390

On Tue, Jan 22, 2019 at 05:33:37PM +0100, Greg Kroah-Hartman wrote:
> On Tue, Jan 22, 2019 at 05:24:54PM +0100, Heiko Carstens wrote:
> > On Tue, Jan 22, 2019 at 04:21:02PM +0100, Greg Kroah-Hartman wrote:
> > > When calling debugfs functions, there is no need to ever check the
> > > return value.  The function can work or not, but the code logic should
> > > never do something different based on this.
> > > 
> > > Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
> > > Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
> > > Cc: Kees Cook <keescook@chromium.org>
> > > Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> > > Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
> > > Cc: linux-s390@vger.kernel.org
> > > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > ---
> > >  arch/s390/kernel/debug.c    | 6 ------
> > >  arch/s390/kernel/kdebugfs.c | 2 --
> > >  arch/s390/kernel/sysinfo.c  | 2 --
> > >  3 files changed, 10 deletions(-)
> > > diff --git a/arch/s390/kernel/sysinfo.c b/arch/s390/kernel/sysinfo.c
> > > index 12f80d1f0415..2ac3c9b56a13 100644
> > > --- a/arch/s390/kernel/sysinfo.c
> > > +++ b/arch/s390/kernel/sysinfo.c
> > > @@ -545,8 +545,6 @@ static __init int stsi_init_debugfs(void)
> > >  	int lvl, i;
> > > 
> > >  	stsi_root = debugfs_create_dir("stsi", arch_debugfs_dir);
> > > -	if (IS_ERR_OR_NULL(stsi_root))
> > > -		return 0;
> > 
> > No objections, however will you also change the odd behaviour that
> > e.g. debugfs_create_file() returns -ENODEV instead of (the expected)
> > NULL pointer if CONFIG_DEBUGFS is disabled?
> 
> Nope.  That is intentional.
> 
> > I do remember this since it caused at least one crash ;)
> 
> Which is why you shouldn't care about the return value of these
> functions :)
> 
> > 19cdd08ba155 ("[S390] qdio: fix broken pointer in case of CONFIG_DEBUG_FS is disabled").
> 
> Odd, what crashes when passed an error pointer?  What was someone trying
> to do with those pointers?  The only thing you can do with a return
> value from a debugfs function is to pass it back into another debugfs
> call.  Sounds like someone wasn't doing that :(

I think it used to be this code that crashed:

static void remove_debugfs_entry(struct qdio_q *q)
{
	int i;

	for (i = 0; i < MAX_DEBUGFS_QUEUES; i++) {
		if (!debugfs_queues[i])
			continue;
----->		if (debugfs_queues[i]->d_inode->i_private == q) {
			debugfs_remove(debugfs_queues[i]);
			debugfs_queues[i] = NULL;
		}
	}
}

Which looks like a layering violation anyway. However this code is
gone, so everything should be fine.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] s390: kernel: no need to check return value of debugfs_create functions
  2019-01-22 15:21 [PATCH] s390: kernel: no need to check return value of debugfs_create functions Greg Kroah-Hartman
  2019-01-22 16:24 ` Heiko Carstens
@ 2019-01-25  8:48 ` Heiko Carstens
  1 sibling, 0 replies; 5+ messages in thread
From: Heiko Carstens @ 2019-01-25  8:48 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, Martin Schwidefsky, Kees Cook,
	Christian Borntraeger, Hendrik Brueckner, linux-s390

On Tue, Jan 22, 2019 at 04:21:02PM +0100, Greg Kroah-Hartman wrote:
> When calling debugfs functions, there is no need to ever check the
> return value.  The function can work or not, but the code logic should
> never do something different based on this.
> 
> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
> Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
> Cc: linux-s390@vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
>  arch/s390/kernel/debug.c    | 6 ------
>  arch/s390/kernel/kdebugfs.c | 2 --
>  arch/s390/kernel/sysinfo.c  | 2 --
>  3 files changed, 10 deletions(-)

Applied, thanks!


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-01-25  8:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-22 15:21 [PATCH] s390: kernel: no need to check return value of debugfs_create functions Greg Kroah-Hartman
2019-01-22 16:24 ` Heiko Carstens
2019-01-22 16:33   ` Greg Kroah-Hartman
2019-01-23  9:35     ` Heiko Carstens
2019-01-25  8:48 ` Heiko Carstens

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.