diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-12-06 13:41:45 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-06 14:09:08 -0500 |
commit | 3e577a80ea85e2557831fd44064f809646f260b4 (patch) | |
tree | 11e5198b33075effb33f70693bc3a189091eb1c3 | |
parent | 7a87b6c228b8d0cc54b9faa159732fcb2a6c9d0c (diff) |
[PATCH] drivers/{char|isdn}: work_struct-induced breakage
part 1 of fsck-knows-how-many
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/char/istallion.c | 8 | ||||
-rw-r--r-- | drivers/char/riscom8.c | 12 | ||||
-rw-r--r-- | drivers/char/serial167.c | 6 | ||||
-rw-r--r-- | drivers/char/stallion.c | 10 | ||||
-rw-r--r-- | drivers/isdn/hysdn/boardergo.c | 5 | ||||
-rw-r--r-- | drivers/macintosh/adb.c | 4 |
6 files changed, 22 insertions, 23 deletions
diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index ffdf9df1a67a..bd9195e17956 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); |
diff --git a/drivers/char/riscom8.c b/drivers/char/riscom8.c index 5ab32b38f45a..722dd3e74185 100644 --- a/drivers/char/riscom8.c +++ b/drivers/char/riscom8.c | |||
@@ -1516,9 +1516,9 @@ static void rc_start(struct tty_struct * tty) | |||
1516 | * do_rc_hangup() -> tty->hangup() -> rc_hangup() | 1516 | * do_rc_hangup() -> tty->hangup() -> rc_hangup() |
1517 | * | 1517 | * |
1518 | */ | 1518 | */ |
1519 | static void do_rc_hangup(void *private_) | 1519 | static void do_rc_hangup(struct work_struct *ugly_api) |
1520 | { | 1520 | { |
1521 | struct riscom_port *port = (struct riscom_port *) private_; | 1521 | struct riscom_port *port = container_of(ugly_api, struct riscom_port, tqueue_hangup); |
1522 | struct tty_struct *tty; | 1522 | struct tty_struct *tty; |
1523 | 1523 | ||
1524 | tty = port->tty; | 1524 | tty = port->tty; |
@@ -1567,9 +1567,9 @@ static void rc_set_termios(struct tty_struct * tty, struct termios * old_termios | |||
1567 | } | 1567 | } |
1568 | } | 1568 | } |
1569 | 1569 | ||
1570 | static void do_softint(void *private_) | 1570 | static void do_softint(struct work_struct *ugly_api) |
1571 | { | 1571 | { |
1572 | struct riscom_port *port = (struct riscom_port *) private_; | 1572 | struct riscom_port *port = container_of(ugly_api, struct riscom_port, tqueue); |
1573 | struct tty_struct *tty; | 1573 | struct tty_struct *tty; |
1574 | 1574 | ||
1575 | if(!(tty = port->tty)) | 1575 | if(!(tty = port->tty)) |
@@ -1632,8 +1632,8 @@ static inline int rc_init_drivers(void) | |||
1632 | memset(rc_port, 0, sizeof(rc_port)); | 1632 | memset(rc_port, 0, sizeof(rc_port)); |
1633 | for (i = 0; i < RC_NPORT * RC_NBOARD; i++) { | 1633 | for (i = 0; i < RC_NPORT * RC_NBOARD; i++) { |
1634 | rc_port[i].magic = RISCOM8_MAGIC; | 1634 | rc_port[i].magic = RISCOM8_MAGIC; |
1635 | INIT_WORK(&rc_port[i].tqueue, do_softint, &rc_port[i]); | 1635 | INIT_WORK(&rc_port[i].tqueue, do_softint); |
1636 | INIT_WORK(&rc_port[i].tqueue_hangup, do_rc_hangup, &rc_port[i]); | 1636 | INIT_WORK(&rc_port[i].tqueue_hangup, do_rc_hangup); |
1637 | rc_port[i].close_delay = 50 * HZ/100; | 1637 | rc_port[i].close_delay = 50 * HZ/100; |
1638 | rc_port[i].closing_wait = 3000 * HZ/100; | 1638 | rc_port[i].closing_wait = 3000 * HZ/100; |
1639 | init_waitqueue_head(&rc_port[i].open_wait); | 1639 | init_waitqueue_head(&rc_port[i].open_wait); |
diff --git a/drivers/char/serial167.c b/drivers/char/serial167.c index 3af7f0958c5d..9ba13af234be 100644 --- a/drivers/char/serial167.c +++ b/drivers/char/serial167.c | |||
@@ -706,9 +706,9 @@ cd2401_rx_interrupt(int irq, void *dev_id) | |||
706 | * had to poll every port to see if that port needed servicing. | 706 | * had to poll every port to see if that port needed servicing. |
707 | */ | 707 | */ |
708 | static void | 708 | static void |
709 | do_softint(void *private_) | 709 | do_softint(struct work_struct *ugly_api) |
710 | { | 710 | { |
711 | struct cyclades_port *info = (struct cyclades_port *) private_; | 711 | struct cyclades_port *info = container_of(ugly_api, struct cyclades_port, tqueue); |
712 | struct tty_struct *tty; | 712 | struct tty_struct *tty; |
713 | 713 | ||
714 | tty = info->tty; | 714 | tty = info->tty; |
@@ -2273,7 +2273,7 @@ scrn[1] = '\0'; | |||
2273 | info->blocked_open = 0; | 2273 | info->blocked_open = 0; |
2274 | info->default_threshold = 0; | 2274 | info->default_threshold = 0; |
2275 | info->default_timeout = 0; | 2275 | info->default_timeout = 0; |
2276 | INIT_WORK(&info->tqueue, do_softint, info); | 2276 | INIT_WORK(&info->tqueue, do_softint); |
2277 | init_waitqueue_head(&info->open_wait); | 2277 | init_waitqueue_head(&info->open_wait); |
2278 | init_waitqueue_head(&info->close_wait); | 2278 | init_waitqueue_head(&info->close_wait); |
2279 | /* info->session */ | 2279 | /* info->session */ |
diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index 522e88e395cc..5e2de62bce70 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c | |||
@@ -500,7 +500,7 @@ static int stl_echatintr(stlbrd_t *brdp); | |||
500 | static int stl_echmcaintr(stlbrd_t *brdp); | 500 | static int stl_echmcaintr(stlbrd_t *brdp); |
501 | static int stl_echpciintr(stlbrd_t *brdp); | 501 | static int stl_echpciintr(stlbrd_t *brdp); |
502 | static int stl_echpci64intr(stlbrd_t *brdp); | 502 | static int stl_echpci64intr(stlbrd_t *brdp); |
503 | static void stl_offintr(void *private); | 503 | static void stl_offintr(struct work_struct *); |
504 | static stlbrd_t *stl_allocbrd(void); | 504 | static stlbrd_t *stl_allocbrd(void); |
505 | static stlport_t *stl_getport(int brdnr, int panelnr, int portnr); | 505 | static stlport_t *stl_getport(int brdnr, int panelnr, int portnr); |
506 | 506 | ||
@@ -2081,14 +2081,12 @@ static int stl_echpci64intr(stlbrd_t *brdp) | |||
2081 | /* | 2081 | /* |
2082 | * Service an off-level request for some channel. | 2082 | * Service an off-level request for some channel. |
2083 | */ | 2083 | */ |
2084 | static void stl_offintr(void *private) | 2084 | static void stl_offintr(struct work_struct *work) |
2085 | { | 2085 | { |
2086 | stlport_t *portp; | 2086 | stlport_t *portp = container_of(work, stlport_t, tqueue); |
2087 | struct tty_struct *tty; | 2087 | struct tty_struct *tty; |
2088 | unsigned int oldsigs; | 2088 | unsigned int oldsigs; |
2089 | 2089 | ||
2090 | portp = private; | ||
2091 | |||
2092 | #ifdef DEBUG | 2090 | #ifdef DEBUG |
2093 | printk("stl_offintr(portp=%x)\n", (int) portp); | 2091 | printk("stl_offintr(portp=%x)\n", (int) portp); |
2094 | #endif | 2092 | #endif |
@@ -2156,7 +2154,7 @@ static int __init stl_initports(stlbrd_t *brdp, stlpanel_t *panelp) | |||
2156 | portp->baud_base = STL_BAUDBASE; | 2154 | portp->baud_base = STL_BAUDBASE; |
2157 | portp->close_delay = STL_CLOSEDELAY; | 2155 | portp->close_delay = STL_CLOSEDELAY; |
2158 | portp->closing_wait = 30 * HZ; | 2156 | portp->closing_wait = 30 * HZ; |
2159 | INIT_WORK(&portp->tqueue, stl_offintr, portp); | 2157 | INIT_WORK(&portp->tqueue, stl_offintr); |
2160 | init_waitqueue_head(&portp->open_wait); | 2158 | init_waitqueue_head(&portp->open_wait); |
2161 | init_waitqueue_head(&portp->close_wait); | 2159 | init_waitqueue_head(&portp->close_wait); |
2162 | portp->stats.brd = portp->brdnr; | 2160 | portp->stats.brd = portp->brdnr; |
diff --git a/drivers/isdn/hysdn/boardergo.c b/drivers/isdn/hysdn/boardergo.c index 82e42a80dc4b..a1206498a1cf 100644 --- a/drivers/isdn/hysdn/boardergo.c +++ b/drivers/isdn/hysdn/boardergo.c | |||
@@ -71,8 +71,9 @@ ergo_interrupt(int intno, void *dev_id) | |||
71 | /* may be queued from everywhere (interrupts included). */ | 71 | /* may be queued from everywhere (interrupts included). */ |
72 | /******************************************************************************/ | 72 | /******************************************************************************/ |
73 | static void | 73 | static void |
74 | ergo_irq_bh(hysdn_card * card) | 74 | ergo_irq_bh(struct work_struct *ugli_api) |
75 | { | 75 | { |
76 | hysdn_card * card = container_of(ugli_api, hysdn_card, irq_queue); | ||
76 | tErgDpram *dpr; | 77 | tErgDpram *dpr; |
77 | int again; | 78 | int again; |
78 | unsigned long flags; | 79 | unsigned long flags; |
@@ -442,7 +443,7 @@ ergo_inithardware(hysdn_card * card) | |||
442 | card->writebootseq = ergo_writebootseq; | 443 | card->writebootseq = ergo_writebootseq; |
443 | card->waitpofready = ergo_waitpofready; | 444 | card->waitpofready = ergo_waitpofready; |
444 | card->set_errlog_state = ergo_set_errlog_state; | 445 | card->set_errlog_state = ergo_set_errlog_state; |
445 | INIT_WORK(&card->irq_queue, (void *) (void *) ergo_irq_bh, card); | 446 | INIT_WORK(&card->irq_queue, ergo_irq_bh); |
446 | card->hysdn_lock = SPIN_LOCK_UNLOCKED; | 447 | card->hysdn_lock = SPIN_LOCK_UNLOCKED; |
447 | 448 | ||
448 | return (0); | 449 | return (0); |
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index be0bd34ff6f9..d43ea81d6df9 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c | |||
@@ -267,12 +267,12 @@ adb_probe_task(void *x) | |||
267 | } | 267 | } |
268 | 268 | ||
269 | static void | 269 | static void |
270 | __adb_probe_task(void *data) | 270 | __adb_probe_task(struct work_struct *bullshit) |
271 | { | 271 | { |
272 | adb_probe_task_pid = kernel_thread(adb_probe_task, NULL, SIGCHLD | CLONE_KERNEL); | 272 | adb_probe_task_pid = kernel_thread(adb_probe_task, NULL, SIGCHLD | CLONE_KERNEL); |
273 | } | 273 | } |
274 | 274 | ||
275 | static DECLARE_WORK(adb_reset_work, __adb_probe_task, NULL); | 275 | static DECLARE_WORK(adb_reset_work, __adb_probe_task); |
276 | 276 | ||
277 | int | 277 | int |
278 | adb_reset_bus(void) | 278 | adb_reset_bus(void) |