diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/osl.c | 25 | ||||
-rw-r--r-- | drivers/ata/libata-core.c | 20 | ||||
-rw-r--r-- | drivers/ata/libata-scsi.c | 14 | ||||
-rw-r--r-- | drivers/ata/libata.h | 4 | ||||
-rw-r--r-- | drivers/block/floppy.c | 6 | ||||
-rw-r--r-- | drivers/char/random.c | 6 | ||||
-rw-r--r-- | drivers/char/sysrq.c | 4 | ||||
-rw-r--r-- | drivers/char/tty_io.c | 31 | ||||
-rw-r--r-- | drivers/char/vt.c | 6 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 10 | ||||
-rw-r--r-- | drivers/input/keyboard/atkbd.c | 6 | ||||
-rw-r--r-- | drivers/input/serio/libps2.c | 6 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 10 | ||||
-rw-r--r-- | drivers/pci/pcie/aer/aerdrv.c | 2 | ||||
-rw-r--r-- | drivers/pci/pcie/aer/aerdrv.h | 2 | ||||
-rw-r--r-- | drivers/pci/pcie/aer/aerdrv_core.c | 8 | ||||
-rw-r--r-- | drivers/scsi/scsi_scan.c | 7 | ||||
-rw-r--r-- | drivers/scsi/scsi_sysfs.c | 10 |
18 files changed, 89 insertions, 88 deletions
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 068fe4f100b0..02b30ae6a68e 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c | |||
@@ -50,6 +50,7 @@ ACPI_MODULE_NAME("osl") | |||
50 | struct acpi_os_dpc { | 50 | struct acpi_os_dpc { |
51 | acpi_osd_exec_callback function; | 51 | acpi_osd_exec_callback function; |
52 | void *context; | 52 | void *context; |
53 | struct work_struct work; | ||
53 | }; | 54 | }; |
54 | 55 | ||
55 | #ifdef CONFIG_ACPI_CUSTOM_DSDT | 56 | #ifdef CONFIG_ACPI_CUSTOM_DSDT |
@@ -564,12 +565,9 @@ void acpi_os_derive_pci_id(acpi_handle rhandle, /* upper bound */ | |||
564 | acpi_os_derive_pci_id_2(rhandle, chandle, id, &is_bridge, &bus_number); | 565 | acpi_os_derive_pci_id_2(rhandle, chandle, id, &is_bridge, &bus_number); |
565 | } | 566 | } |
566 | 567 | ||
567 | static void acpi_os_execute_deferred(void *context) | 568 | static void acpi_os_execute_deferred(struct work_struct *work) |
568 | { | 569 | { |
569 | struct acpi_os_dpc *dpc = NULL; | 570 | struct acpi_os_dpc *dpc = container_of(work, struct acpi_os_dpc, work); |
570 | |||
571 | |||
572 | dpc = (struct acpi_os_dpc *)context; | ||
573 | if (!dpc) { | 571 | if (!dpc) { |
574 | printk(KERN_ERR PREFIX "Invalid (NULL) context\n"); | 572 | printk(KERN_ERR PREFIX "Invalid (NULL) context\n"); |
575 | return; | 573 | return; |
@@ -602,7 +600,6 @@ acpi_status acpi_os_execute(acpi_execute_type type, | |||
602 | { | 600 | { |
603 | acpi_status status = AE_OK; | 601 | acpi_status status = AE_OK; |
604 | struct acpi_os_dpc *dpc; | 602 | struct acpi_os_dpc *dpc; |
605 | struct work_struct *task; | ||
606 | 603 | ||
607 | ACPI_FUNCTION_TRACE("os_queue_for_execution"); | 604 | ACPI_FUNCTION_TRACE("os_queue_for_execution"); |
608 | 605 | ||
@@ -615,28 +612,22 @@ acpi_status acpi_os_execute(acpi_execute_type type, | |||
615 | 612 | ||
616 | /* | 613 | /* |
617 | * Allocate/initialize DPC structure. Note that this memory will be | 614 | * Allocate/initialize DPC structure. Note that this memory will be |
618 | * freed by the callee. The kernel handles the tq_struct list in a | 615 | * freed by the callee. The kernel handles the work_struct list in a |
619 | * way that allows us to also free its memory inside the callee. | 616 | * way that allows us to also free its memory inside the callee. |
620 | * Because we may want to schedule several tasks with different | 617 | * Because we may want to schedule several tasks with different |
621 | * parameters we can't use the approach some kernel code uses of | 618 | * parameters we can't use the approach some kernel code uses of |
622 | * having a static tq_struct. | 619 | * having a static work_struct. |
623 | * We can save time and code by allocating the DPC and tq_structs | ||
624 | * from the same memory. | ||
625 | */ | 620 | */ |
626 | 621 | ||
627 | dpc = | 622 | dpc = kmalloc(sizeof(struct acpi_os_dpc), GFP_ATOMIC); |
628 | kmalloc(sizeof(struct acpi_os_dpc) + sizeof(struct work_struct), | ||
629 | GFP_ATOMIC); | ||
630 | if (!dpc) | 623 | if (!dpc) |
631 | return_ACPI_STATUS(AE_NO_MEMORY); | 624 | return_ACPI_STATUS(AE_NO_MEMORY); |
632 | 625 | ||
633 | dpc->function = function; | 626 | dpc->function = function; |
634 | dpc->context = context; | 627 | dpc->context = context; |
635 | 628 | ||
636 | task = (void *)(dpc + 1); | 629 | INIT_WORK(&dpc->work, acpi_os_execute_deferred); |
637 | INIT_WORK(task, acpi_os_execute_deferred, (void *)dpc); | 630 | if (!queue_work(kacpid_wq, &dpc->work)) { |
638 | |||
639 | if (!queue_work(kacpid_wq, task)) { | ||
640 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, | 631 | ACPI_DEBUG_PRINT((ACPI_DB_ERROR, |
641 | "Call to queue_work() failed.\n")); | 632 | "Call to queue_work() failed.\n")); |
642 | kfree(dpc); | 633 | kfree(dpc); |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 0bb4b4dced76..b5f2da6ac80e 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -914,7 +914,7 @@ static unsigned int ata_id_xfermask(const u16 *id) | |||
914 | * ata_port_queue_task - Queue port_task | 914 | * ata_port_queue_task - Queue port_task |
915 | * @ap: The ata_port to queue port_task for | 915 | * @ap: The ata_port to queue port_task for |
916 | * @fn: workqueue function to be scheduled | 916 | * @fn: workqueue function to be scheduled |
917 | * @data: data value to pass to workqueue function | 917 | * @data: data for @fn to use |
918 | * @delay: delay time for workqueue function | 918 | * @delay: delay time for workqueue function |
919 | * | 919 | * |
920 | * Schedule @fn(@data) for execution after @delay jiffies using | 920 | * Schedule @fn(@data) for execution after @delay jiffies using |
@@ -929,7 +929,7 @@ static unsigned int ata_id_xfermask(const u16 *id) | |||
929 | * LOCKING: | 929 | * LOCKING: |
930 | * Inherited from caller. | 930 | * Inherited from caller. |
931 | */ | 931 | */ |
932 | void ata_port_queue_task(struct ata_port *ap, void (*fn)(void *), void *data, | 932 | void ata_port_queue_task(struct ata_port *ap, work_func_t fn, void *data, |
933 | unsigned long delay) | 933 | unsigned long delay) |
934 | { | 934 | { |
935 | int rc; | 935 | int rc; |
@@ -937,7 +937,8 @@ void ata_port_queue_task(struct ata_port *ap, void (*fn)(void *), void *data, | |||
937 | if (ap->pflags & ATA_PFLAG_FLUSH_PORT_TASK) | 937 | if (ap->pflags & ATA_PFLAG_FLUSH_PORT_TASK) |
938 | return; | 938 | return; |
939 | 939 | ||
940 | PREPARE_DELAYED_WORK(&ap->port_task, fn, data); | 940 | PREPARE_DELAYED_WORK(&ap->port_task, fn); |
941 | ap->port_task_data = data; | ||
941 | 942 | ||
942 | rc = queue_delayed_work(ata_wq, &ap->port_task, delay); | 943 | rc = queue_delayed_work(ata_wq, &ap->port_task, delay); |
943 | 944 | ||
@@ -4292,10 +4293,11 @@ fsm_start: | |||
4292 | return poll_next; | 4293 | return poll_next; |
4293 | } | 4294 | } |
4294 | 4295 | ||
4295 | static void ata_pio_task(void *_data) | 4296 | static void ata_pio_task(struct work_struct *work) |
4296 | { | 4297 | { |
4297 | struct ata_queued_cmd *qc = _data; | 4298 | struct ata_port *ap = |
4298 | struct ata_port *ap = qc->ap; | 4299 | container_of(work, struct ata_port, port_task.work); |
4300 | struct ata_queued_cmd *qc = ap->port_task_data; | ||
4299 | u8 status; | 4301 | u8 status; |
4300 | int poll_next; | 4302 | int poll_next; |
4301 | 4303 | ||
@@ -5317,9 +5319,9 @@ void ata_port_init(struct ata_port *ap, struct ata_host *host, | |||
5317 | ap->msg_enable = ATA_MSG_DRV | ATA_MSG_ERR | ATA_MSG_WARN; | 5319 | ap->msg_enable = ATA_MSG_DRV | ATA_MSG_ERR | ATA_MSG_WARN; |
5318 | #endif | 5320 | #endif |
5319 | 5321 | ||
5320 | INIT_DELAYED_WORK(&ap->port_task, NULL, NULL); | 5322 | INIT_DELAYED_WORK(&ap->port_task, NULL); |
5321 | INIT_DELAYED_WORK(&ap->hotplug_task, ata_scsi_hotplug, ap); | 5323 | INIT_DELAYED_WORK(&ap->hotplug_task, ata_scsi_hotplug); |
5322 | INIT_WORK(&ap->scsi_rescan_task, ata_scsi_dev_rescan, ap); | 5324 | INIT_WORK(&ap->scsi_rescan_task, ata_scsi_dev_rescan); |
5323 | INIT_LIST_HEAD(&ap->eh_done_q); | 5325 | INIT_LIST_HEAD(&ap->eh_done_q); |
5324 | init_waitqueue_head(&ap->eh_wait_q); | 5326 | init_waitqueue_head(&ap->eh_wait_q); |
5325 | 5327 | ||
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 5c1fc467fc7f..c872b324dbd3 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -3079,7 +3079,7 @@ static void ata_scsi_remove_dev(struct ata_device *dev) | |||
3079 | 3079 | ||
3080 | /** | 3080 | /** |
3081 | * ata_scsi_hotplug - SCSI part of hotplug | 3081 | * ata_scsi_hotplug - SCSI part of hotplug |
3082 | * @data: Pointer to ATA port to perform SCSI hotplug on | 3082 | * @work: Pointer to ATA port to perform SCSI hotplug on |
3083 | * | 3083 | * |
3084 | * Perform SCSI part of hotplug. It's executed from a separate | 3084 | * Perform SCSI part of hotplug. It's executed from a separate |
3085 | * workqueue after EH completes. This is necessary because SCSI | 3085 | * workqueue after EH completes. This is necessary because SCSI |
@@ -3089,9 +3089,10 @@ static void ata_scsi_remove_dev(struct ata_device *dev) | |||
3089 | * LOCKING: | 3089 | * LOCKING: |
3090 | * Kernel thread context (may sleep). | 3090 | * Kernel thread context (may sleep). |
3091 | */ | 3091 | */ |
3092 | void ata_scsi_hotplug(void *data) | 3092 | void ata_scsi_hotplug(struct work_struct *work) |
3093 | { | 3093 | { |
3094 | struct ata_port *ap = data; | 3094 | struct ata_port *ap = |
3095 | container_of(work, struct ata_port, hotplug_task.work); | ||
3095 | int i; | 3096 | int i; |
3096 | 3097 | ||
3097 | if (ap->pflags & ATA_PFLAG_UNLOADING) { | 3098 | if (ap->pflags & ATA_PFLAG_UNLOADING) { |
@@ -3190,7 +3191,7 @@ static int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel, | |||
3190 | 3191 | ||
3191 | /** | 3192 | /** |
3192 | * ata_scsi_dev_rescan - initiate scsi_rescan_device() | 3193 | * ata_scsi_dev_rescan - initiate scsi_rescan_device() |
3193 | * @data: Pointer to ATA port to perform scsi_rescan_device() | 3194 | * @work: Pointer to ATA port to perform scsi_rescan_device() |
3194 | * | 3195 | * |
3195 | * After ATA pass thru (SAT) commands are executed successfully, | 3196 | * After ATA pass thru (SAT) commands are executed successfully, |
3196 | * libata need to propagate the changes to SCSI layer. This | 3197 | * libata need to propagate the changes to SCSI layer. This |
@@ -3200,9 +3201,10 @@ static int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel, | |||
3200 | * LOCKING: | 3201 | * LOCKING: |
3201 | * Kernel thread context (may sleep). | 3202 | * Kernel thread context (may sleep). |
3202 | */ | 3203 | */ |
3203 | void ata_scsi_dev_rescan(void *data) | 3204 | void ata_scsi_dev_rescan(struct work_struct *work) |
3204 | { | 3205 | { |
3205 | struct ata_port *ap = data; | 3206 | struct ata_port *ap = |
3207 | container_of(work, struct ata_port, scsi_rescan_task); | ||
3206 | struct ata_device *dev; | 3208 | struct ata_device *dev; |
3207 | unsigned int i; | 3209 | unsigned int i; |
3208 | 3210 | ||
diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h index 0ed263be652a..7e0f3aff873d 100644 --- a/drivers/ata/libata.h +++ b/drivers/ata/libata.h | |||
@@ -81,7 +81,7 @@ extern struct scsi_transport_template ata_scsi_transport_template; | |||
81 | 81 | ||
82 | extern void ata_scsi_scan_host(struct ata_port *ap); | 82 | extern void ata_scsi_scan_host(struct ata_port *ap); |
83 | extern int ata_scsi_offline_dev(struct ata_device *dev); | 83 | extern int ata_scsi_offline_dev(struct ata_device *dev); |
84 | extern void ata_scsi_hotplug(void *data); | 84 | extern void ata_scsi_hotplug(struct work_struct *work); |
85 | extern unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf, | 85 | extern unsigned int ata_scsiop_inq_std(struct ata_scsi_args *args, u8 *rbuf, |
86 | unsigned int buflen); | 86 | unsigned int buflen); |
87 | 87 | ||
@@ -111,7 +111,7 @@ extern void ata_scsi_rbuf_fill(struct ata_scsi_args *args, | |||
111 | unsigned int (*actor) (struct ata_scsi_args *args, | 111 | unsigned int (*actor) (struct ata_scsi_args *args, |
112 | u8 *rbuf, unsigned int buflen)); | 112 | u8 *rbuf, unsigned int buflen)); |
113 | extern void ata_schedule_scsi_eh(struct Scsi_Host *shost); | 113 | extern void ata_schedule_scsi_eh(struct Scsi_Host *shost); |
114 | extern void ata_scsi_dev_rescan(void *data); | 114 | extern void ata_scsi_dev_rescan(struct work_struct *work); |
115 | extern int ata_bus_probe(struct ata_port *ap); | 115 | extern int ata_bus_probe(struct ata_port *ap); |
116 | 116 | ||
117 | /* libata-eh.c */ | 117 | /* libata-eh.c */ |
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index aa1eb4466f9d..3f1b38276e96 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c | |||
@@ -992,11 +992,11 @@ static void empty(void) | |||
992 | { | 992 | { |
993 | } | 993 | } |
994 | 994 | ||
995 | static DECLARE_WORK(floppy_work, NULL, NULL); | 995 | static DECLARE_WORK(floppy_work, NULL); |
996 | 996 | ||
997 | static void schedule_bh(void (*handler) (void)) | 997 | static void schedule_bh(void (*handler) (void)) |
998 | { | 998 | { |
999 | PREPARE_WORK(&floppy_work, (work_func_t)handler, NULL); | 999 | PREPARE_WORK(&floppy_work, (work_func_t)handler); |
1000 | schedule_work(&floppy_work); | 1000 | schedule_work(&floppy_work); |
1001 | } | 1001 | } |
1002 | 1002 | ||
@@ -1008,7 +1008,7 @@ static void cancel_activity(void) | |||
1008 | 1008 | ||
1009 | spin_lock_irqsave(&floppy_lock, flags); | 1009 | spin_lock_irqsave(&floppy_lock, flags); |
1010 | do_floppy = NULL; | 1010 | do_floppy = NULL; |
1011 | PREPARE_WORK(&floppy_work, (work_func_t)empty, NULL); | 1011 | PREPARE_WORK(&floppy_work, (work_func_t)empty); |
1012 | del_timer(&fd_timer); | 1012 | del_timer(&fd_timer); |
1013 | spin_unlock_irqrestore(&floppy_lock, flags); | 1013 | spin_unlock_irqrestore(&floppy_lock, flags); |
1014 | } | 1014 | } |
diff --git a/drivers/char/random.c b/drivers/char/random.c index f2ab61f3e8ae..fa764688cad1 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c | |||
@@ -1422,9 +1422,9 @@ static struct keydata { | |||
1422 | 1422 | ||
1423 | static unsigned int ip_cnt; | 1423 | static unsigned int ip_cnt; |
1424 | 1424 | ||
1425 | static void rekey_seq_generator(void *private_); | 1425 | static void rekey_seq_generator(struct work_struct *work); |
1426 | 1426 | ||
1427 | static DECLARE_DELAYED_WORK(rekey_work, rekey_seq_generator, NULL); | 1427 | static DECLARE_DELAYED_WORK(rekey_work, rekey_seq_generator); |
1428 | 1428 | ||
1429 | /* | 1429 | /* |
1430 | * Lock avoidance: | 1430 | * Lock avoidance: |
@@ -1438,7 +1438,7 @@ static DECLARE_DELAYED_WORK(rekey_work, rekey_seq_generator, NULL); | |||
1438 | * happen, and even if that happens only a not perfectly compliant | 1438 | * happen, and even if that happens only a not perfectly compliant |
1439 | * ISN is generated, nothing fatal. | 1439 | * ISN is generated, nothing fatal. |
1440 | */ | 1440 | */ |
1441 | static void rekey_seq_generator(void *private_) | 1441 | static void rekey_seq_generator(struct work_struct *work) |
1442 | { | 1442 | { |
1443 | struct keydata *keyptr = &ip_keydata[1 ^ (ip_cnt & 1)]; | 1443 | struct keydata *keyptr = &ip_keydata[1 ^ (ip_cnt & 1)]; |
1444 | 1444 | ||
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index 5f49280779fb..c64f5bcff947 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c | |||
@@ -219,13 +219,13 @@ static struct sysrq_key_op sysrq_term_op = { | |||
219 | .enable_mask = SYSRQ_ENABLE_SIGNAL, | 219 | .enable_mask = SYSRQ_ENABLE_SIGNAL, |
220 | }; | 220 | }; |
221 | 221 | ||
222 | static void moom_callback(void *ignored) | 222 | static void moom_callback(struct work_struct *ignored) |
223 | { | 223 | { |
224 | out_of_memory(&NODE_DATA(0)->node_zonelists[ZONE_NORMAL], | 224 | out_of_memory(&NODE_DATA(0)->node_zonelists[ZONE_NORMAL], |
225 | GFP_KERNEL, 0); | 225 | GFP_KERNEL, 0); |
226 | } | 226 | } |
227 | 227 | ||
228 | static DECLARE_WORK(moom_work, moom_callback, NULL); | 228 | static DECLARE_WORK(moom_work, moom_callback); |
229 | 229 | ||
230 | static void sysrq_handle_moom(int key, struct tty_struct *tty) | 230 | static void sysrq_handle_moom(int key, struct tty_struct *tty) |
231 | { | 231 | { |
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 7297acfe520c..83e9e7d9b58c 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -1254,7 +1254,7 @@ EXPORT_SYMBOL_GPL(tty_ldisc_flush); | |||
1254 | 1254 | ||
1255 | /** | 1255 | /** |
1256 | * do_tty_hangup - actual handler for hangup events | 1256 | * do_tty_hangup - actual handler for hangup events |
1257 | * @data: tty device | 1257 | * @work: tty device |
1258 | * | 1258 | * |
1259 | * This can be called by the "eventd" kernel thread. That is process | 1259 | * This can be called by the "eventd" kernel thread. That is process |
1260 | * synchronous but doesn't hold any locks, so we need to make sure we | 1260 | * synchronous but doesn't hold any locks, so we need to make sure we |
@@ -1274,9 +1274,10 @@ EXPORT_SYMBOL_GPL(tty_ldisc_flush); | |||
1274 | * tasklist_lock to walk task list for hangup event | 1274 | * tasklist_lock to walk task list for hangup event |
1275 | * | 1275 | * |
1276 | */ | 1276 | */ |
1277 | static void do_tty_hangup(void *data) | 1277 | static void do_tty_hangup(struct work_struct *work) |
1278 | { | 1278 | { |
1279 | struct tty_struct *tty = (struct tty_struct *) data; | 1279 | struct tty_struct *tty = |
1280 | container_of(work, struct tty_struct, hangup_work); | ||
1280 | struct file * cons_filp = NULL; | 1281 | struct file * cons_filp = NULL; |
1281 | struct file *filp, *f = NULL; | 1282 | struct file *filp, *f = NULL; |
1282 | struct task_struct *p; | 1283 | struct task_struct *p; |
@@ -1433,7 +1434,7 @@ void tty_vhangup(struct tty_struct * tty) | |||
1433 | 1434 | ||
1434 | printk(KERN_DEBUG "%s vhangup...\n", tty_name(tty, buf)); | 1435 | printk(KERN_DEBUG "%s vhangup...\n", tty_name(tty, buf)); |
1435 | #endif | 1436 | #endif |
1436 | do_tty_hangup((void *) tty); | 1437 | do_tty_hangup(&tty->hangup_work); |
1437 | } | 1438 | } |
1438 | EXPORT_SYMBOL(tty_vhangup); | 1439 | EXPORT_SYMBOL(tty_vhangup); |
1439 | 1440 | ||
@@ -3304,12 +3305,13 @@ int tty_ioctl(struct inode * inode, struct file * file, | |||
3304 | * Nasty bug: do_SAK is being called in interrupt context. This can | 3305 | * Nasty bug: do_SAK is being called in interrupt context. This can |
3305 | * deadlock. We punt it up to process context. AKPM - 16Mar2001 | 3306 | * deadlock. We punt it up to process context. AKPM - 16Mar2001 |
3306 | */ | 3307 | */ |
3307 | static void __do_SAK(void *arg) | 3308 | static void __do_SAK(struct work_struct *work) |
3308 | { | 3309 | { |
3310 | struct tty_struct *tty = | ||
3311 | container_of(work, struct tty_struct, SAK_work); | ||
3309 | #ifdef TTY_SOFT_SAK | 3312 | #ifdef TTY_SOFT_SAK |
3310 | tty_hangup(tty); | 3313 | tty_hangup(tty); |
3311 | #else | 3314 | #else |
3312 | struct tty_struct *tty = arg; | ||
3313 | struct task_struct *g, *p; | 3315 | struct task_struct *g, *p; |
3314 | int session; | 3316 | int session; |
3315 | int i; | 3317 | int i; |
@@ -3388,7 +3390,7 @@ void do_SAK(struct tty_struct *tty) | |||
3388 | { | 3390 | { |
3389 | if (!tty) | 3391 | if (!tty) |
3390 | return; | 3392 | return; |
3391 | PREPARE_WORK(&tty->SAK_work, __do_SAK, tty); | 3393 | PREPARE_WORK(&tty->SAK_work, __do_SAK); |
3392 | schedule_work(&tty->SAK_work); | 3394 | schedule_work(&tty->SAK_work); |
3393 | } | 3395 | } |
3394 | 3396 | ||
@@ -3396,7 +3398,7 @@ EXPORT_SYMBOL(do_SAK); | |||
3396 | 3398 | ||
3397 | /** | 3399 | /** |
3398 | * flush_to_ldisc | 3400 | * flush_to_ldisc |
3399 | * @private_: tty structure passed from work queue. | 3401 | * @work: tty structure passed from work queue. |
3400 | * | 3402 | * |
3401 | * This routine is called out of the software interrupt to flush data | 3403 | * This routine is called out of the software interrupt to flush data |
3402 | * from the buffer chain to the line discipline. | 3404 | * from the buffer chain to the line discipline. |
@@ -3406,9 +3408,10 @@ EXPORT_SYMBOL(do_SAK); | |||
3406 | * receive_buf method is single threaded for each tty instance. | 3408 | * receive_buf method is single threaded for each tty instance. |
3407 | */ | 3409 | */ |
3408 | 3410 | ||
3409 | static void flush_to_ldisc(void *private_) | 3411 | static void flush_to_ldisc(struct work_struct *work) |
3410 | { | 3412 | { |
3411 | struct tty_struct *tty = (struct tty_struct *) private_; | 3413 | struct tty_struct *tty = |
3414 | container_of(work, struct tty_struct, buf.work.work); | ||
3412 | unsigned long flags; | 3415 | unsigned long flags; |
3413 | struct tty_ldisc *disc; | 3416 | struct tty_ldisc *disc; |
3414 | struct tty_buffer *tbuf, *head; | 3417 | struct tty_buffer *tbuf, *head; |
@@ -3553,7 +3556,7 @@ void tty_flip_buffer_push(struct tty_struct *tty) | |||
3553 | spin_unlock_irqrestore(&tty->buf.lock, flags); | 3556 | spin_unlock_irqrestore(&tty->buf.lock, flags); |
3554 | 3557 | ||
3555 | if (tty->low_latency) | 3558 | if (tty->low_latency) |
3556 | flush_to_ldisc((void *) tty); | 3559 | flush_to_ldisc(&tty->buf.work.work); |
3557 | else | 3560 | else |
3558 | schedule_delayed_work(&tty->buf.work, 1); | 3561 | schedule_delayed_work(&tty->buf.work, 1); |
3559 | } | 3562 | } |
@@ -3580,17 +3583,17 @@ static void initialize_tty_struct(struct tty_struct *tty) | |||
3580 | tty->overrun_time = jiffies; | 3583 | tty->overrun_time = jiffies; |
3581 | tty->buf.head = tty->buf.tail = NULL; | 3584 | tty->buf.head = tty->buf.tail = NULL; |
3582 | tty_buffer_init(tty); | 3585 | tty_buffer_init(tty); |
3583 | INIT_DELAYED_WORK(&tty->buf.work, flush_to_ldisc, tty); | 3586 | INIT_DELAYED_WORK(&tty->buf.work, flush_to_ldisc); |
3584 | init_MUTEX(&tty->buf.pty_sem); | 3587 | init_MUTEX(&tty->buf.pty_sem); |
3585 | mutex_init(&tty->termios_mutex); | 3588 | mutex_init(&tty->termios_mutex); |
3586 | init_waitqueue_head(&tty->write_wait); | 3589 | init_waitqueue_head(&tty->write_wait); |
3587 | init_waitqueue_head(&tty->read_wait); | 3590 | init_waitqueue_head(&tty->read_wait); |
3588 | INIT_WORK(&tty->hangup_work, do_tty_hangup, tty); | 3591 | INIT_WORK(&tty->hangup_work, do_tty_hangup); |
3589 | mutex_init(&tty->atomic_read_lock); | 3592 | mutex_init(&tty->atomic_read_lock); |
3590 | mutex_init(&tty->atomic_write_lock); | 3593 | mutex_init(&tty->atomic_write_lock); |
3591 | spin_lock_init(&tty->read_lock); | 3594 | spin_lock_init(&tty->read_lock); |
3592 | INIT_LIST_HEAD(&tty->tty_files); | 3595 | INIT_LIST_HEAD(&tty->tty_files); |
3593 | INIT_WORK(&tty->SAK_work, NULL, NULL); | 3596 | INIT_WORK(&tty->SAK_work, NULL); |
3594 | } | 3597 | } |
3595 | 3598 | ||
3596 | /* | 3599 | /* |
diff --git a/drivers/char/vt.c b/drivers/char/vt.c index 8e4413f6fbaf..8ee04adc37f0 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c | |||
@@ -155,7 +155,7 @@ static void con_flush_chars(struct tty_struct *tty); | |||
155 | static void set_vesa_blanking(char __user *p); | 155 | static void set_vesa_blanking(char __user *p); |
156 | static void set_cursor(struct vc_data *vc); | 156 | static void set_cursor(struct vc_data *vc); |
157 | static void hide_cursor(struct vc_data *vc); | 157 | static void hide_cursor(struct vc_data *vc); |
158 | static void console_callback(void *ignored); | 158 | static void console_callback(struct work_struct *ignored); |
159 | static void blank_screen_t(unsigned long dummy); | 159 | static void blank_screen_t(unsigned long dummy); |
160 | static void set_palette(struct vc_data *vc); | 160 | static void set_palette(struct vc_data *vc); |
161 | 161 | ||
@@ -174,7 +174,7 @@ static int vesa_blank_mode; /* 0:none 1:suspendV 2:suspendH 3:powerdown */ | |||
174 | static int blankinterval = 10*60*HZ; | 174 | static int blankinterval = 10*60*HZ; |
175 | static int vesa_off_interval; | 175 | static int vesa_off_interval; |
176 | 176 | ||
177 | static DECLARE_WORK(console_work, console_callback, NULL); | 177 | static DECLARE_WORK(console_work, console_callback); |
178 | 178 | ||
179 | /* | 179 | /* |
180 | * fg_console is the current virtual console, | 180 | * fg_console is the current virtual console, |
@@ -2154,7 +2154,7 @@ out: | |||
2154 | * with other console code and prevention of re-entrancy is | 2154 | * with other console code and prevention of re-entrancy is |
2155 | * ensured with console_sem. | 2155 | * ensured with console_sem. |
2156 | */ | 2156 | */ |
2157 | static void console_callback(void *ignored) | 2157 | static void console_callback(struct work_struct *ignored) |
2158 | { | 2158 | { |
2159 | acquire_console_sem(); | 2159 | acquire_console_sem(); |
2160 | 2160 | ||
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index dd0c2623e27b..7a7c6e6dfe4f 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -42,7 +42,7 @@ static DEFINE_SPINLOCK(cpufreq_driver_lock); | |||
42 | 42 | ||
43 | /* internal prototypes */ | 43 | /* internal prototypes */ |
44 | static int __cpufreq_governor(struct cpufreq_policy *policy, unsigned int event); | 44 | static int __cpufreq_governor(struct cpufreq_policy *policy, unsigned int event); |
45 | static void handle_update(void *data); | 45 | static void handle_update(struct work_struct *work); |
46 | 46 | ||
47 | /** | 47 | /** |
48 | * Two notifier lists: the "policy" list is involved in the | 48 | * Two notifier lists: the "policy" list is involved in the |
@@ -665,7 +665,7 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
665 | mutex_init(&policy->lock); | 665 | mutex_init(&policy->lock); |
666 | mutex_lock(&policy->lock); | 666 | mutex_lock(&policy->lock); |
667 | init_completion(&policy->kobj_unregister); | 667 | init_completion(&policy->kobj_unregister); |
668 | INIT_WORK(&policy->update, handle_update, (void *)(long)cpu); | 668 | INIT_WORK(&policy->update, handle_update); |
669 | 669 | ||
670 | /* call driver. From then on the cpufreq must be able | 670 | /* call driver. From then on the cpufreq must be able |
671 | * to accept all calls to ->verify and ->setpolicy for this CPU | 671 | * to accept all calls to ->verify and ->setpolicy for this CPU |
@@ -895,9 +895,11 @@ static int cpufreq_remove_dev (struct sys_device * sys_dev) | |||
895 | } | 895 | } |
896 | 896 | ||
897 | 897 | ||
898 | static void handle_update(void *data) | 898 | static void handle_update(struct work_struct *work) |
899 | { | 899 | { |
900 | unsigned int cpu = (unsigned int)(long)data; | 900 | struct cpufreq_policy *policy = |
901 | container_of(work, struct cpufreq_policy, update); | ||
902 | unsigned int cpu = policy->cpu; | ||
901 | dprintk("handle_update for cpu %u called\n", cpu); | 903 | dprintk("handle_update for cpu %u called\n", cpu); |
902 | cpufreq_update_policy(cpu); | 904 | cpufreq_update_policy(cpu); |
903 | } | 905 | } |
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index cbb93669d1ce..8451b29a3db5 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c | |||
@@ -567,9 +567,9 @@ static int atkbd_set_leds(struct atkbd *atkbd) | |||
567 | * interrupt context. | 567 | * interrupt context. |
568 | */ | 568 | */ |
569 | 569 | ||
570 | static void atkbd_event_work(void *data) | 570 | static void atkbd_event_work(struct work_struct *work) |
571 | { | 571 | { |
572 | struct atkbd *atkbd = data; | 572 | struct atkbd *atkbd = container_of(work, struct atkbd, event_work); |
573 | 573 | ||
574 | mutex_lock(&atkbd->event_mutex); | 574 | mutex_lock(&atkbd->event_mutex); |
575 | 575 | ||
@@ -943,7 +943,7 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv) | |||
943 | 943 | ||
944 | atkbd->dev = dev; | 944 | atkbd->dev = dev; |
945 | ps2_init(&atkbd->ps2dev, serio); | 945 | ps2_init(&atkbd->ps2dev, serio); |
946 | INIT_WORK(&atkbd->event_work, atkbd_event_work, atkbd); | 946 | INIT_WORK(&atkbd->event_work, atkbd_event_work); |
947 | mutex_init(&atkbd->event_mutex); | 947 | mutex_init(&atkbd->event_mutex); |
948 | 948 | ||
949 | switch (serio->id.type) { | 949 | switch (serio->id.type) { |
diff --git a/drivers/input/serio/libps2.c b/drivers/input/serio/libps2.c index e5b1b60757bb..b3e84d3bb7f7 100644 --- a/drivers/input/serio/libps2.c +++ b/drivers/input/serio/libps2.c | |||
@@ -251,9 +251,9 @@ EXPORT_SYMBOL(ps2_command); | |||
251 | * ps2_schedule_command(), to a PS/2 device (keyboard, mouse, etc.) | 251 | * ps2_schedule_command(), to a PS/2 device (keyboard, mouse, etc.) |
252 | */ | 252 | */ |
253 | 253 | ||
254 | static void ps2_execute_scheduled_command(void *data) | 254 | static void ps2_execute_scheduled_command(struct work_struct *work) |
255 | { | 255 | { |
256 | struct ps2work *ps2work = data; | 256 | struct ps2work *ps2work = container_of(work, struct ps2work, work); |
257 | 257 | ||
258 | ps2_command(ps2work->ps2dev, ps2work->param, ps2work->command); | 258 | ps2_command(ps2work->ps2dev, ps2work->param, ps2work->command); |
259 | kfree(ps2work); | 259 | kfree(ps2work); |
@@ -278,7 +278,7 @@ int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int comman | |||
278 | ps2work->ps2dev = ps2dev; | 278 | ps2work->ps2dev = ps2dev; |
279 | ps2work->command = command; | 279 | ps2work->command = command; |
280 | memcpy(ps2work->param, param, send); | 280 | memcpy(ps2work->param, param, send); |
281 | INIT_WORK(&ps2work->work, ps2_execute_scheduled_command, ps2work); | 281 | INIT_WORK(&ps2work->work, ps2_execute_scheduled_command); |
282 | 282 | ||
283 | if (!schedule_work(&ps2work->work)) { | 283 | if (!schedule_work(&ps2work->work)) { |
284 | kfree(ps2work); | 284 | kfree(ps2work); |
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 726ec5e88ab2..03294400bc90 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -183,7 +183,7 @@ void e1000_set_ethtool_ops(struct net_device *netdev); | |||
183 | static void e1000_enter_82542_rst(struct e1000_adapter *adapter); | 183 | static void e1000_enter_82542_rst(struct e1000_adapter *adapter); |
184 | static void e1000_leave_82542_rst(struct e1000_adapter *adapter); | 184 | static void e1000_leave_82542_rst(struct e1000_adapter *adapter); |
185 | static void e1000_tx_timeout(struct net_device *dev); | 185 | static void e1000_tx_timeout(struct net_device *dev); |
186 | static void e1000_reset_task(struct net_device *dev); | 186 | static void e1000_reset_task(struct work_struct *work); |
187 | static void e1000_smartspeed(struct e1000_adapter *adapter); | 187 | static void e1000_smartspeed(struct e1000_adapter *adapter); |
188 | static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter, | 188 | static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter, |
189 | struct sk_buff *skb); | 189 | struct sk_buff *skb); |
@@ -908,8 +908,7 @@ e1000_probe(struct pci_dev *pdev, | |||
908 | adapter->phy_info_timer.function = &e1000_update_phy_info; | 908 | adapter->phy_info_timer.function = &e1000_update_phy_info; |
909 | adapter->phy_info_timer.data = (unsigned long) adapter; | 909 | adapter->phy_info_timer.data = (unsigned long) adapter; |
910 | 910 | ||
911 | INIT_WORK(&adapter->reset_task, | 911 | INIT_WORK(&adapter->reset_task, e1000_reset_task); |
912 | (void (*)(void *))e1000_reset_task, netdev); | ||
913 | 912 | ||
914 | e1000_check_options(adapter); | 913 | e1000_check_options(adapter); |
915 | 914 | ||
@@ -3154,9 +3153,10 @@ e1000_tx_timeout(struct net_device *netdev) | |||
3154 | } | 3153 | } |
3155 | 3154 | ||
3156 | static void | 3155 | static void |
3157 | e1000_reset_task(struct net_device *netdev) | 3156 | e1000_reset_task(struct work_struct *work) |
3158 | { | 3157 | { |
3159 | struct e1000_adapter *adapter = netdev_priv(netdev); | 3158 | struct e1000_adapter *adapter = |
3159 | container_of(work, struct e1000_adapter, reset_task); | ||
3160 | 3160 | ||
3161 | e1000_reinit_locked(adapter); | 3161 | e1000_reinit_locked(adapter); |
3162 | } | 3162 | } |
diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c index 04c43ef529ac..55866b6b26fa 100644 --- a/drivers/pci/pcie/aer/aerdrv.c +++ b/drivers/pci/pcie/aer/aerdrv.c | |||
@@ -160,7 +160,7 @@ static struct aer_rpc* aer_alloc_rpc(struct pcie_device *dev) | |||
160 | rpc->e_lock = SPIN_LOCK_UNLOCKED; | 160 | rpc->e_lock = SPIN_LOCK_UNLOCKED; |
161 | 161 | ||
162 | rpc->rpd = dev; | 162 | rpc->rpd = dev; |
163 | INIT_WORK(&rpc->dpc_handler, aer_isr, (void *)dev); | 163 | INIT_WORK(&rpc->dpc_handler, aer_isr); |
164 | rpc->prod_idx = rpc->cons_idx = 0; | 164 | rpc->prod_idx = rpc->cons_idx = 0; |
165 | mutex_init(&rpc->rpc_mutex); | 165 | mutex_init(&rpc->rpc_mutex); |
166 | init_waitqueue_head(&rpc->wait_release); | 166 | init_waitqueue_head(&rpc->wait_release); |
diff --git a/drivers/pci/pcie/aer/aerdrv.h b/drivers/pci/pcie/aer/aerdrv.h index daf0cad88fc8..3c0a58f64dd8 100644 --- a/drivers/pci/pcie/aer/aerdrv.h +++ b/drivers/pci/pcie/aer/aerdrv.h | |||
@@ -118,7 +118,7 @@ extern struct bus_type pcie_port_bus_type; | |||
118 | extern void aer_enable_rootport(struct aer_rpc *rpc); | 118 | extern void aer_enable_rootport(struct aer_rpc *rpc); |
119 | extern void aer_delete_rootport(struct aer_rpc *rpc); | 119 | extern void aer_delete_rootport(struct aer_rpc *rpc); |
120 | extern int aer_init(struct pcie_device *dev); | 120 | extern int aer_init(struct pcie_device *dev); |
121 | extern void aer_isr(void *context); | 121 | extern void aer_isr(struct work_struct *work); |
122 | extern void aer_print_error(struct pci_dev *dev, struct aer_err_info *info); | 122 | extern void aer_print_error(struct pci_dev *dev, struct aer_err_info *info); |
123 | extern int aer_osc_setup(struct pci_dev *dev); | 123 | extern int aer_osc_setup(struct pci_dev *dev); |
124 | 124 | ||
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c index 1c7e660d6535..08e13033ced8 100644 --- a/drivers/pci/pcie/aer/aerdrv_core.c +++ b/drivers/pci/pcie/aer/aerdrv_core.c | |||
@@ -690,14 +690,14 @@ static void aer_isr_one_error(struct pcie_device *p_device, | |||
690 | 690 | ||
691 | /** | 691 | /** |
692 | * aer_isr - consume errors detected by root port | 692 | * aer_isr - consume errors detected by root port |
693 | * @context: pointer to a private data of pcie device | 693 | * @work: definition of this work item |
694 | * | 694 | * |
695 | * Invoked, as DPC, when root port records new detected error | 695 | * Invoked, as DPC, when root port records new detected error |
696 | **/ | 696 | **/ |
697 | void aer_isr(void *context) | 697 | void aer_isr(struct work_struct *work) |
698 | { | 698 | { |
699 | struct pcie_device *p_device = (struct pcie_device *) context; | 699 | struct aer_rpc *rpc = container_of(work, struct aer_rpc, dpc_handler); |
700 | struct aer_rpc *rpc = get_service_data(p_device); | 700 | struct pcie_device *p_device = rpc->rpd; |
701 | struct aer_err_source *e_src; | 701 | struct aer_err_source *e_src; |
702 | 702 | ||
703 | mutex_lock(&rpc->rpc_mutex); | 703 | mutex_lock(&rpc->rpc_mutex); |
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 94a274645f6f..d3c5e964c964 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
@@ -362,9 +362,10 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, | |||
362 | goto retry; | 362 | goto retry; |
363 | } | 363 | } |
364 | 364 | ||
365 | static void scsi_target_reap_usercontext(void *data) | 365 | static void scsi_target_reap_usercontext(struct work_struct *work) |
366 | { | 366 | { |
367 | struct scsi_target *starget = data; | 367 | struct scsi_target *starget = |
368 | container_of(work, struct scsi_target, ew.work); | ||
368 | struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); | 369 | struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); |
369 | unsigned long flags; | 370 | unsigned long flags; |
370 | 371 | ||
@@ -400,7 +401,7 @@ void scsi_target_reap(struct scsi_target *starget) | |||
400 | starget->state = STARGET_DEL; | 401 | starget->state = STARGET_DEL; |
401 | spin_unlock_irqrestore(shost->host_lock, flags); | 402 | spin_unlock_irqrestore(shost->host_lock, flags); |
402 | execute_in_process_context(scsi_target_reap_usercontext, | 403 | execute_in_process_context(scsi_target_reap_usercontext, |
403 | starget, &starget->ew); | 404 | &starget->ew); |
404 | return; | 405 | return; |
405 | 406 | ||
406 | } | 407 | } |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index e1a91665d1c2..259c90cfa367 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -218,16 +218,16 @@ static void scsi_device_cls_release(struct class_device *class_dev) | |||
218 | put_device(&sdev->sdev_gendev); | 218 | put_device(&sdev->sdev_gendev); |
219 | } | 219 | } |
220 | 220 | ||
221 | static void scsi_device_dev_release_usercontext(void *data) | 221 | static void scsi_device_dev_release_usercontext(struct work_struct *work) |
222 | { | 222 | { |
223 | struct device *dev = data; | ||
224 | struct scsi_device *sdev; | 223 | struct scsi_device *sdev; |
225 | struct device *parent; | 224 | struct device *parent; |
226 | struct scsi_target *starget; | 225 | struct scsi_target *starget; |
227 | unsigned long flags; | 226 | unsigned long flags; |
228 | 227 | ||
229 | parent = dev->parent; | 228 | sdev = container_of(work, struct scsi_device, ew.work); |
230 | sdev = to_scsi_device(dev); | 229 | |
230 | parent = sdev->sdev_gendev.parent; | ||
231 | starget = to_scsi_target(parent); | 231 | starget = to_scsi_target(parent); |
232 | 232 | ||
233 | spin_lock_irqsave(sdev->host->host_lock, flags); | 233 | spin_lock_irqsave(sdev->host->host_lock, flags); |
@@ -258,7 +258,7 @@ static void scsi_device_dev_release_usercontext(void *data) | |||
258 | static void scsi_device_dev_release(struct device *dev) | 258 | static void scsi_device_dev_release(struct device *dev) |
259 | { | 259 | { |
260 | struct scsi_device *sdp = to_scsi_device(dev); | 260 | struct scsi_device *sdp = to_scsi_device(dev); |
261 | execute_in_process_context(scsi_device_dev_release_usercontext, dev, | 261 | execute_in_process_context(scsi_device_dev_release_usercontext, |
262 | &sdp->ew); | 262 | &sdp->ew); |
263 | } | 263 | } |
264 | 264 | ||