All of lore.kernel.org
 help / color / mirror / Atom feed
From: Akinobu Mita <akinobu.mita@gmail.com>
To: Randy Dunlap <rdunlap@xenotime.net>
Cc: linux-kernel@vger.kernel.org, akpm@osdl.org, "Digi International,
	Inc" <Eng.Linux@digi.com>
Subject: Re: [PATCH] epca: privent from panic on tty_register_driver() failure
Date: Tue, 10 Oct 2006 12:01:45 +0900	[thread overview]
Message-ID: <20061010030144.GA5685@localhost> (raw)
In-Reply-To: <20061009084545.c64daf6c.rdunlap@xenotime.net>

On Mon, Oct 09, 2006 at 08:45:45AM -0700, Randy Dunlap wrote:

> >  
> >  	pc_driver = alloc_tty_driver(MAX_ALLOC);
> >  	if (!pc_driver)
> > -		return -ENOMEM;
> > +		goto out1;
> >  
> >  	pc_info = alloc_tty_driver(MAX_ALLOC);
> > -	if (!pc_info) {
> > -		put_tty_driver(pc_driver);
> > -		return -ENOMEM;
> > -	}
> > +	if (!pc_info)
> > +		goto out2;
> 
> and then out2: uses pc_info, if it's NULL.  Is that OK?

I made mistake. I swapped the order of these two put_tty_driver() in
error handling wrongly.

This is fixed version.

Subject: epca: privent from panic on tty_register_driver() failure

This patch make epca fail on initialization failure instead of panic.

Cc: "Digi International, Inc" <Eng.Linux@digi.com>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>

 drivers/char/epca.c |   32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

Index: work-fault-inject/drivers/char/epca.c
===================================================================
--- work-fault-inject.orig/drivers/char/epca.c	2006-10-09 22:16:24.000000000 +0900
+++ work-fault-inject/drivers/char/epca.c	2006-10-10 00:47:50.000000000 +0900
@@ -1157,6 +1157,7 @@ static int __init pc_init(void)
 	int crd;
 	struct board_info *bd;
 	unsigned char board_id = 0;
+	int err = -ENOMEM;
 
 	int pci_boards_found, pci_count;
 
@@ -1164,13 +1165,11 @@ static int __init pc_init(void)
 
 	pc_driver = alloc_tty_driver(MAX_ALLOC);
 	if (!pc_driver)
-		return -ENOMEM;
+		goto out1;
 
 	pc_info = alloc_tty_driver(MAX_ALLOC);
-	if (!pc_info) {
-		put_tty_driver(pc_driver);
-		return -ENOMEM;
-	}
+	if (!pc_info)
+		goto out2;
 
 	/* -----------------------------------------------------------------------
 		If epca_setup has not been ran by LILO set num_cards to defaults; copy
@@ -1370,11 +1369,17 @@ static int __init pc_init(void)
 
 	} /* End for each card */
 
-	if (tty_register_driver(pc_driver))
-		panic("Couldn't register Digi PC/ driver");
+	err = tty_register_driver(pc_driver);
+	if (err) {
+		printk(KERN_ERR "Couldn't register Digi PC/ driver");
+		goto out3;
+	}
 
-	if (tty_register_driver(pc_info))
-		panic("Couldn't register Digi PC/ info ");
+	err = tty_register_driver(pc_info);
+	if (err) {
+		printk(KERN_ERR "Couldn't register Digi PC/ info ");
+		goto out4;
+	}
 
 	/* -------------------------------------------------------------------
 	   Start up the poller to check for events on all enabled boards
@@ -1385,6 +1390,15 @@ static int __init pc_init(void)
 	mod_timer(&epca_timer, jiffies + HZ/25);
 	return 0;
 
+out4:
+	tty_unregister_driver(pc_driver);
+out3:
+	put_tty_driver(pc_info);
+out2:
+	put_tty_driver(pc_driver);
+out1:
+	return err;
+
 } /* End pc_init */
 
 /* ------------------ Begin post_fep_init  ---------------------- */

  reply	other threads:[~2006-10-10  3:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-09  9:06 [PATCH] epca: privent from panic on tty_register_driver() failure Akinobu Mita
2006-10-09 15:45 ` Randy Dunlap
2006-10-10  3:01   ` Akinobu Mita [this message]
2006-10-12 11:13 ` Alan Cox
  -- strict thread matches above, loose matches on Subject: below --
2006-10-12 22:31 [PATCH] epca: privent from panic on tty_register_driver()failure Kilau, Scott

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=20061010030144.GA5685@localhost \
    --to=akinobu.mita@gmail.com \
    --cc=Eng.Linux@digi.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@xenotime.net \
    /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 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.