diff options
Diffstat (limited to 'drivers/s390/crypto/ap_bus.c')
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 79d89c368919..e4dc947e74e9 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
@@ -37,7 +37,7 @@ | |||
37 | #include "ap_bus.h" | 37 | #include "ap_bus.h" |
38 | 38 | ||
39 | /* Some prototypes. */ | 39 | /* Some prototypes. */ |
40 | static void ap_scan_bus(void *); | 40 | static void ap_scan_bus(struct work_struct *); |
41 | static void ap_poll_all(unsigned long); | 41 | static void ap_poll_all(unsigned long); |
42 | static void ap_poll_timeout(unsigned long); | 42 | static void ap_poll_timeout(unsigned long); |
43 | static int ap_poll_thread_start(void); | 43 | static int ap_poll_thread_start(void); |
@@ -71,7 +71,7 @@ static struct device *ap_root_device = NULL; | |||
71 | static struct workqueue_struct *ap_work_queue; | 71 | static struct workqueue_struct *ap_work_queue; |
72 | static struct timer_list ap_config_timer; | 72 | static struct timer_list ap_config_timer; |
73 | static int ap_config_time = AP_CONFIG_TIME; | 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 | * Tasklet & timer for AP request polling. | 77 | * Tasklet & timer for AP request polling. |
@@ -431,7 +431,15 @@ static int ap_uevent (struct device *dev, char **envp, int num_envp, | |||
431 | ap_dev->device_type); | 431 | ap_dev->device_type); |
432 | if (buffer_size - length <= 0) | 432 | if (buffer_size - length <= 0) |
433 | return -ENOMEM; | 433 | return -ENOMEM; |
434 | envp[1] = 0; | 434 | buffer += length; |
435 | buffer_size -= length; | ||
436 | /* Add MODALIAS= */ | ||
437 | envp[1] = buffer; | ||
438 | length = scnprintf(buffer, buffer_size, "MODALIAS=ap:t%02X", | ||
439 | ap_dev->device_type); | ||
440 | if (buffer_size - length <= 0) | ||
441 | return -ENOMEM; | ||
442 | envp[2] = NULL; | ||
435 | return 0; | 443 | return 0; |
436 | } | 444 | } |
437 | 445 | ||
@@ -724,7 +732,7 @@ static void ap_device_release(struct device *dev) | |||
724 | kfree(ap_dev); | 732 | kfree(ap_dev); |
725 | } | 733 | } |
726 | 734 | ||
727 | static void ap_scan_bus(void *data) | 735 | static void ap_scan_bus(struct work_struct *unused) |
728 | { | 736 | { |
729 | struct ap_device *ap_dev; | 737 | struct ap_device *ap_dev; |
730 | struct device *dev; | 738 | struct device *dev; |