Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] More work_struct induced breakage (s390)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Al Viro and committed by
Linus Torvalds
4927b3f7 f9e9dcb3

+21 -24
+4 -6
drivers/s390/block/dasd.c
··· 54 54 static void dasd_int_handler(struct ccw_device *, unsigned long, struct irb *); 55 55 static int dasd_flush_ccw_queue(struct dasd_device *, int); 56 56 static void dasd_tasklet(struct dasd_device *); 57 - static void do_kick_device(void *data); 57 + static void do_kick_device(struct work_struct *); 58 58 59 59 /* 60 60 * SECTION: Operations on the device structure. ··· 100 100 (unsigned long) device); 101 101 INIT_LIST_HEAD(&device->ccw_queue); 102 102 init_timer(&device->timer); 103 - INIT_WORK(&device->kick_work, do_kick_device, device); 103 + INIT_WORK(&device->kick_work, do_kick_device); 104 104 device->state = DASD_STATE_NEW; 105 105 device->target = DASD_STATE_NEW; 106 106 ··· 407 407 * event daemon. 408 408 */ 409 409 static void 410 - do_kick_device(void *data) 410 + do_kick_device(struct work_struct *work) 411 411 { 412 - struct dasd_device *device; 413 - 414 - device = (struct dasd_device *) data; 412 + struct dasd_device *device = container_of(work, struct dasd_device, kick_work); 415 413 dasd_change_state(device); 416 414 dasd_schedule_bh(device); 417 415 dasd_put_device(device);
+4 -5
drivers/s390/cio/css.c
··· 334 334 static DEFINE_SPINLOCK(slow_subchannel_lock); 335 335 336 336 static void 337 - css_trigger_slow_path(void) 337 + css_trigger_slow_path(struct work_struct *unused) 338 338 { 339 339 CIO_TRACE_EVENT(4, "slowpath"); 340 340 ··· 359 359 spin_unlock_irq(&slow_subchannel_lock); 360 360 } 361 361 362 - typedef void (*workfunc)(void *); 363 - DECLARE_WORK(slow_path_work, (workfunc)css_trigger_slow_path, NULL); 362 + DECLARE_WORK(slow_path_work, css_trigger_slow_path); 364 363 struct workqueue_struct *slow_path_wq; 365 364 366 365 /* Reprobe subchannel if unregistered. */ ··· 396 397 } 397 398 398 399 /* Work function used to reprobe all unregistered subchannels. */ 399 - static void reprobe_all(void *data) 400 + static void reprobe_all(struct work_struct *unused) 400 401 { 401 402 int ret; 402 403 ··· 412 413 need_reprobe); 413 414 } 414 415 415 - DECLARE_WORK(css_reprobe_work, reprobe_all, NULL); 416 + DECLARE_WORK(css_reprobe_work, reprobe_all); 416 417 417 418 /* Schedule reprobing of all unregistered subchannels. */ 418 419 void css_schedule_reprobe(void)
+3 -3
drivers/s390/crypto/ap_bus.c
··· 37 37 #include "ap_bus.h" 38 38 39 39 /* Some prototypes. */ 40 - static void ap_scan_bus(void *); 40 + static void ap_scan_bus(struct work_struct *); 41 41 static void ap_poll_all(unsigned long); 42 42 static void ap_poll_timeout(unsigned long); 43 43 static int ap_poll_thread_start(void); ··· 71 71 static struct workqueue_struct *ap_work_queue; 72 72 static struct timer_list ap_config_timer; 73 73 static int ap_config_time = AP_CONFIG_TIME; 74 - static DECLARE_WORK(ap_config_work, ap_scan_bus, NULL); 74 + static DECLARE_WORK(ap_config_work, ap_scan_bus); 75 75 76 76 /** 77 77 * Tasklet & timer for AP request polling. ··· 732 732 kfree(ap_dev); 733 733 } 734 734 735 - static void ap_scan_bus(void *data) 735 + static void ap_scan_bus(struct work_struct *unused) 736 736 { 737 737 struct ap_device *ap_dev; 738 738 struct device *dev;
+4 -4
drivers/s390/net/lcs.c
··· 67 67 * Some prototypes. 68 68 */ 69 69 static void lcs_tasklet(unsigned long); 70 - static void lcs_start_kernel_thread(struct lcs_card *card); 70 + static void lcs_start_kernel_thread(struct work_struct *); 71 71 static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); 72 72 static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); 73 73 static int lcs_recovery(void *ptr); ··· 1724 1724 * Kernel Thread helper functions for LGW initiated commands 1725 1725 */ 1726 1726 static void 1727 - lcs_start_kernel_thread(struct lcs_card *card) 1727 + lcs_start_kernel_thread(struct work_struct *work) 1728 1728 { 1729 + struct lcs_card *card = container_of(work, struct lcs_card, kernel_thread_starter); 1729 1730 LCS_DBF_TEXT(5, trace, "krnthrd"); 1730 1731 if (lcs_do_start_thread(card, LCS_RECOVERY_THREAD)) 1731 1732 kernel_thread(lcs_recovery, (void *) card, SIGCHLD); ··· 2054 2053 ccwgdev->cdev[0]->handler = lcs_irq; 2055 2054 ccwgdev->cdev[1]->handler = lcs_irq; 2056 2055 card->gdev = ccwgdev; 2057 - INIT_WORK(&card->kernel_thread_starter, 2058 - (void *) lcs_start_kernel_thread, card); 2056 + INIT_WORK(&card->kernel_thread_starter, lcs_start_kernel_thread); 2059 2057 card->thread_start_mask = 0; 2060 2058 card->thread_allowed_mask = 0; 2061 2059 card->thread_running_mask = 0;
+3 -3
drivers/s390/net/qeth_main.c
··· 1039 1039 } 1040 1040 1041 1041 static void 1042 - qeth_start_kernel_thread(struct qeth_card *card) 1042 + qeth_start_kernel_thread(struct work_struct *work) 1043 1043 { 1044 + struct qeth_card *card = container_of(work, struct qeth_card, kernel_thread_starter); 1044 1045 QETH_DBF_TEXT(trace , 2, "strthrd"); 1045 1046 1046 1047 if (card->read.state != CH_STATE_UP && ··· 1104 1103 card->thread_start_mask = 0; 1105 1104 card->thread_allowed_mask = 0; 1106 1105 card->thread_running_mask = 0; 1107 - INIT_WORK(&card->kernel_thread_starter, 1108 - (void *)qeth_start_kernel_thread,card); 1106 + INIT_WORK(&card->kernel_thread_starter, qeth_start_kernel_thread); 1109 1107 INIT_LIST_HEAD(&card->ip_list); 1110 1108 card->ip_tbd_list = kmalloc(sizeof(struct list_head), GFP_KERNEL); 1111 1109 if (!card->ip_tbd_list) {
+3 -3
drivers/scsi/oktagon_esp.c
··· 72 72 static int oktagon_notify_reboot(struct notifier_block *this, unsigned long code, void *x); 73 73 74 74 #ifdef USE_BOTTOM_HALF 75 - static void dma_commit(void *opaque); 75 + static void dma_commit(struct work_struct *unused); 76 76 77 77 long oktag_to_io(long *paddr, long *addr, long len); 78 78 long oktag_from_io(long *addr, long *paddr, long len); 79 79 80 - static DECLARE_WORK(tq_fake_dma, dma_commit, NULL); 80 + static DECLARE_WORK(tq_fake_dma, dma_commit); 81 81 82 82 #define DMA_MAXTRANSFER 0x8000 83 83 ··· 266 266 */ 267 267 268 268 269 - static void dma_commit(void *opaque) 269 + static void dma_commit(struct work_struct *unused) 270 270 { 271 271 long wait,len2,pos; 272 272 struct NCR_ESP *esp;