From: Christoph Hellwig Note that most of the drivers are in a compiling shape currently, but I want to get rid of the last callers of those. (acked by Tom Rini) --- 25-akpm/arch/ppc/4xx_io/serial_sicc.c | 10 +--------- 25-akpm/arch/ppc/8260_io/uart.c | 10 ++-------- 25-akpm/arch/ppc/8xx_io/cs4218_tdm.c | 13 +------------ 25-akpm/arch/ppc/8xx_io/uart.c | 11 ++--------- 4 files changed, 6 insertions(+), 38 deletions(-) diff -puN arch/ppc/4xx_io/serial_sicc.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code arch/ppc/4xx_io/serial_sicc.c --- 25/arch/ppc/4xx_io/serial_sicc.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code 2004-05-16 00:05:48.902762960 -0700 +++ 25-akpm/arch/ppc/4xx_io/serial_sicc.c 2004-05-16 00:05:48.912761440 -0700 @@ -1431,7 +1431,6 @@ static void siccuart_close(struct tty_st save_flags(flags); cli(); if (tty_hung_up_p(filp)) { - MOD_DEC_USE_COUNT; restore_flags(flags); return; } @@ -1452,7 +1451,6 @@ static void siccuart_close(struct tty_st state->count = 0; } if (state->count) { - MOD_DEC_USE_COUNT; restore_flags(flags); return; } @@ -1495,7 +1493,6 @@ static void siccuart_close(struct tty_st } info->flags &= ~(ASYNC_NORMAL_ACTIVE|ASYNC_CLOSING); wake_up_interruptible(&info->close_wait); - MOD_DEC_USE_COUNT; } static void siccuart_wait_until_sent(struct tty_struct *tty, int timeout) @@ -1685,9 +1682,7 @@ static int siccuart_open(struct tty_stru // is this a line that we've got? - MOD_INC_USE_COUNT; if (line >= SERIAL_SICC_NR) { - MOD_DEC_USE_COUNT; return -ENODEV; } @@ -1707,7 +1702,6 @@ static int siccuart_open(struct tty_stru if (tmp_buf) free_page(page); else if (!page) { - MOD_DEC_USE_COUNT; return -ENOMEM; } tmp_buf = (u_char *)page; @@ -1720,7 +1714,6 @@ static int siccuart_open(struct tty_stru (info->flags & ASYNC_CLOSING)) { if (info->flags & ASYNC_CLOSING) interruptible_sleep_on(&info->close_wait); - MOD_DEC_USE_COUNT; return -EAGAIN; } @@ -1729,13 +1722,11 @@ static int siccuart_open(struct tty_stru */ retval = siccuart_startup(info); if (retval) { - MOD_DEC_USE_COUNT; return retval; } retval = block_til_ready(tty, filp, info); if (retval) { - MOD_DEC_USE_COUNT; return retval; } @@ -1778,6 +1769,7 @@ int __init siccuart_init(void) return -ENOMEM; printk("IBM Vesta SICC serial port driver V 0.1 by Yudong Yang and Yi Ge / IBM CRL .\n"); siccnormal_driver->driver_name = "serial_sicc"; + siccnormal_driver->owner = THIS_MODULE; siccnormal_driver->name = SERIAL_SICC_NAME; siccnormal_driver->major = SERIAL_SICC_MAJOR; siccnormal_driver->minor_start = SERIAL_SICC_MINOR; diff -puN arch/ppc/8260_io/uart.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code arch/ppc/8260_io/uart.c --- 25/arch/ppc/8260_io/uart.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code 2004-05-16 00:05:48.904762656 -0700 +++ 25-akpm/arch/ppc/8260_io/uart.c 2004-05-16 00:05:48.914761136 -0700 @@ -592,9 +592,7 @@ static _INLINE_ void check_modem_status( #ifdef SERIAL_DEBUG_OPEN printk("scheduling hangup..."); #endif - MOD_INC_USE_COUNT; - if (schedule_work(&info->tqueue_hangup) == 0) - MOD_DEC_USE_COUNT; + schedule_work(&info->tqueue_hangup); } } if (info->flags & ASYNC_CTS_FLOW) { @@ -723,7 +721,6 @@ static void do_serial_hangup(void *priva tty = info->tty; if (tty) tty_hangup(tty); - MOD_DEC_USE_COUNT; } /*static void rs_8xx_timer(void) @@ -1689,7 +1686,6 @@ static void rs_8xx_close(struct tty_stru if (tty_hung_up_p(filp)) { DBG_CNT("before DEC-hung"); - MOD_DEC_USE_COUNT; restore_flags(flags); return; } @@ -1716,7 +1712,6 @@ static void rs_8xx_close(struct tty_stru } if (state->count) { DBG_CNT("before DEC-2"); - MOD_DEC_USE_COUNT; restore_flags(flags); return; } @@ -1770,7 +1765,6 @@ static void rs_8xx_close(struct tty_stru } info->flags &= ~(ASYNC_NORMAL_ACTIVE|ASYNC_CLOSING); wake_up_interruptible(&info->close_wait); - MOD_DEC_USE_COUNT; restore_flags(flags); } @@ -2021,7 +2015,6 @@ static int rs_8xx_open(struct tty_struct if (retval) return retval; - MOD_INC_USE_COUNT; retval = block_til_ready(tty, filp, info); if (retval) { #ifdef SERIAL_DEBUG_OPEN @@ -2530,6 +2523,7 @@ static int __init rs_8xx_init(void) /* Initialize the tty_driver structure */ + serial_driver->owner = THIS_MODULE; serial_driver->driver_name = "serial"; serial_driver->devfs_name = "tts/"; serial_driver->name = "ttyS"; diff -puN arch/ppc/8xx_io/cs4218_tdm.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code arch/ppc/8xx_io/cs4218_tdm.c --- 25/arch/ppc/8xx_io/cs4218_tdm.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code 2004-05-16 00:05:48.906762352 -0700 +++ 25-akpm/arch/ppc/8xx_io/cs4218_tdm.c 2004-05-16 00:05:48.916760832 -0700 @@ -1456,21 +1456,10 @@ static void cs_mksound(unsigned int hz, restore_flags(flags); } -static void CS_open(void) -{ - MOD_INC_USE_COUNT; -} - -static void CS_release(void) -{ - MOD_DEC_USE_COUNT; -} - static MACHINE mach_cs4218 = { + .owner = THIS_MODULE, .name = "HIOX CS4218", .name2 = "Built-in Sound", - .open = CS_open, - .release = CS_release, .dma_alloc = CS_Alloc, .dma_free = CS_Free, .irqinit = CS_IrqInit, diff -puN arch/ppc/8xx_io/uart.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code arch/ppc/8xx_io/uart.c --- 25/arch/ppc/8xx_io/uart.c~ppc32-fix-mod_incdec_use_count-abuse-in-ppc-4xx-8xx-code 2004-05-16 00:05:48.907762200 -0700 +++ 25-akpm/arch/ppc/8xx_io/uart.c 2004-05-16 00:05:48.918760528 -0700 @@ -583,9 +583,7 @@ static _INLINE_ void check_modem_status( #ifdef SERIAL_DEBUG_OPEN printk("scheduling hangup..."); #endif - MOD_INC_USE_COUNT; - if (schedule_task(&info->tqueue_hangup) == 0) - MOD_DEC_USE_COUNT; + schedule_task(&info->tqueue_hangup); } } if (info->flags & ASYNC_CTS_FLOW) { @@ -719,7 +717,6 @@ static void do_serial_hangup(void *priva tty = info->tty; if (tty) tty_hangup(tty); - MOD_DEC_USE_COUNT; } /*static void rs_8xx_timer(void) @@ -1664,7 +1661,6 @@ static void rs_8xx_close(struct tty_stru if (tty_hung_up_p(filp)) { DBG_CNT("before DEC-hung"); - MOD_DEC_USE_COUNT; restore_flags(flags); return; } @@ -1691,7 +1687,6 @@ static void rs_8xx_close(struct tty_stru } if (state->count) { DBG_CNT("before DEC-2"); - MOD_DEC_USE_COUNT; restore_flags(flags); return; } @@ -1746,7 +1741,6 @@ static void rs_8xx_close(struct tty_stru } info->flags &= ~(ASYNC_NORMAL_ACTIVE|ASYNC_CLOSING); wake_up_interruptible(&info->close_wait); - MOD_DEC_USE_COUNT; restore_flags(flags); } @@ -2008,14 +2002,12 @@ static int rs_8xx_open(struct tty_struct if (retval) return retval; - MOD_INC_USE_COUNT; retval = block_til_ready(tty, filp, info); if (retval) { #ifdef SERIAL_DEBUG_OPEN printk("rs_open returning after block_til_ready with %d\n", retval); #endif - MOD_DEC_USE_COUNT; return retval; } @@ -2520,6 +2512,7 @@ static int __init rs_8xx_init(void) /* Initialize the tty_driver structure */ + serial_driver->owner = THIS_MODULE; serial_driver->driver_name = "serial"; serial_driver->devfs_name = "tts/"; serial_driver->name = "ttyS"; _