diff options
Diffstat (limited to 'drivers/char/istallion.c')
-rw-r--r-- | drivers/char/istallion.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index ffdf9df1a67a..8f591945ebd9 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c | |||
@@ -663,7 +663,7 @@ static int stli_initopen(stlibrd_t *brdp, stliport_t *portp); | |||
663 | static int stli_rawopen(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait); | 663 | static int stli_rawopen(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait); |
664 | static int stli_rawclose(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait); | 664 | static int stli_rawclose(stlibrd_t *brdp, stliport_t *portp, unsigned long arg, int wait); |
665 | static int stli_waitcarrier(stlibrd_t *brdp, stliport_t *portp, struct file *filp); | 665 | static int stli_waitcarrier(stlibrd_t *brdp, stliport_t *portp, struct file *filp); |
666 | static void stli_dohangup(void *arg); | 666 | static void stli_dohangup(struct work_struct *); |
667 | static int stli_setport(stliport_t *portp); | 667 | static int stli_setport(stliport_t *portp); |
668 | static int stli_cmdwait(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback); | 668 | static int stli_cmdwait(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback); |
669 | static void stli_sendcmd(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback); | 669 | static void stli_sendcmd(stlibrd_t *brdp, stliport_t *portp, unsigned long cmd, void *arg, int size, int copyback); |
@@ -1990,9 +1990,9 @@ static void stli_start(struct tty_struct *tty) | |||
1990 | * aren't that time critical). | 1990 | * aren't that time critical). |
1991 | */ | 1991 | */ |
1992 | 1992 | ||
1993 | static void stli_dohangup(void *arg) | 1993 | static void stli_dohangup(struct work_struct *ugly_api) |
1994 | { | 1994 | { |
1995 | stliport_t *portp = (stliport_t *) arg; | 1995 | stliport_t *portp = container_of(ugly_api, stliport_t, tqhangup); |
1996 | if (portp->tty != NULL) { | 1996 | if (portp->tty != NULL) { |
1997 | tty_hangup(portp->tty); | 1997 | tty_hangup(portp->tty); |
1998 | } | 1998 | } |
@@ -2898,7 +2898,7 @@ static int stli_initports(stlibrd_t *brdp) | |||
2898 | portp->baud_base = STL_BAUDBASE; | 2898 | portp->baud_base = STL_BAUDBASE; |
2899 | portp->close_delay = STL_CLOSEDELAY; | 2899 | portp->close_delay = STL_CLOSEDELAY; |
2900 | portp->closing_wait = 30 * HZ; | 2900 | portp->closing_wait = 30 * HZ; |
2901 | INIT_WORK(&portp->tqhangup, stli_dohangup, portp); | 2901 | INIT_WORK(&portp->tqhangup, stli_dohangup); |
2902 | init_waitqueue_head(&portp->open_wait); | 2902 | init_waitqueue_head(&portp->open_wait); |
2903 | init_waitqueue_head(&portp->close_wait); | 2903 | init_waitqueue_head(&portp->close_wait); |
2904 | init_waitqueue_head(&portp->raw_wait); | 2904 | init_waitqueue_head(&portp->raw_wait); |
@@ -3476,6 +3476,8 @@ static int stli_initecp(stlibrd_t *brdp) | |||
3476 | if (sig.magic != cpu_to_le32(ECP_MAGIC)) | 3476 | if (sig.magic != cpu_to_le32(ECP_MAGIC)) |
3477 | { | 3477 | { |
3478 | release_region(brdp->iobase, brdp->iosize); | 3478 | release_region(brdp->iobase, brdp->iosize); |
3479 | iounmap(brdp->membase); | ||
3480 | brdp->membase = NULL; | ||
3479 | return -ENODEV; | 3481 | return -ENODEV; |
3480 | } | 3482 | } |
3481 | 3483 | ||
@@ -3632,6 +3634,8 @@ static int stli_initonb(stlibrd_t *brdp) | |||
3632 | sig.magic3 != cpu_to_le16(ONB_MAGIC3)) | 3634 | sig.magic3 != cpu_to_le16(ONB_MAGIC3)) |
3633 | { | 3635 | { |
3634 | release_region(brdp->iobase, brdp->iosize); | 3636 | release_region(brdp->iobase, brdp->iosize); |
3637 | iounmap(brdp->membase); | ||
3638 | brdp->membase = NULL; | ||
3635 | return -ENODEV; | 3639 | return -ENODEV; |
3636 | } | 3640 | } |
3637 | 3641 | ||