aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-03-03 15:58:43 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-03-03 15:58:43 -0500
commit530ede14cf63ef4a207b0003e14af2f750484180 (patch)
tree2849be2c8fd6d2d6a8a71447aebe5d7400317c8d /drivers
parent6977c6fc77b864dc1851e100c8528c2f3ed5bd9b (diff)
parent72a6b43e4bbb818ac1875a3a572cb2aa8c9af820 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull second set of s390 patches from Martin Schwidefsky: "The main part of this merge are Heikos uaccess patches. Together with commit 09884964335e ("mm: do not grow the stack vma just because of an overrun on preceding vma") the user string access is hopefully fixed for good. In addition some bug fixes and two cleanup patches." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/module: fix compile warning qdio: remove unused parameters s390/uaccess: fix kernel ds access for page table walk s390/uaccess: fix strncpy_from_user string length check input: disable i8042 PC Keyboard controller for s390 s390/dis: Fix invalid array size s390/uaccess: remove pointless access_ok() checks s390/uaccess: fix strncpy_from_user/strnlen_user zero maxlen case s390/uaccess: shorten strncpy_from_user/strnlen_user s390/dasd: fix unresponsive device after all channel paths were lost s390/mm: ignore change bit for vmemmap s390/page table dumper: add support for change-recording override bit
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/serio/Kconfig2
-rw-r--r--drivers/s390/block/dasd_eckd.c10
-rw-r--r--drivers/s390/cio/qdio_debug.c9
-rw-r--r--drivers/s390/cio/qdio_debug.h3
-rw-r--r--drivers/s390/cio/qdio_main.c2
5 files changed, 16 insertions, 10 deletions
diff --git a/drivers/input/serio/Kconfig b/drivers/input/serio/Kconfig
index 6e9cc765e0dc..3ec5ef2dd443 100644
--- a/drivers/input/serio/Kconfig
+++ b/drivers/input/serio/Kconfig
@@ -22,7 +22,7 @@ config SERIO_I8042
22 tristate "i8042 PC Keyboard controller" if EXPERT || !X86 22 tristate "i8042 PC Keyboard controller" if EXPERT || !X86
23 default y 23 default y
24 depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && \ 24 depends on !PARISC && (!ARM || ARCH_SHARK || FOOTBRIDGE_HOST) && \
25 (!SUPERH || SH_CAYMAN) && !M68K && !BLACKFIN 25 (!SUPERH || SH_CAYMAN) && !M68K && !BLACKFIN && !S390
26 help 26 help
27 i8042 is the chip over which the standard AT keyboard and PS/2 27 i8042 is the chip over which the standard AT keyboard and PS/2
28 mouse are connected to the computer. If you use these devices, 28 mouse are connected to the computer. If you use these devices,
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 33f26bfa62f2..6999fd919e94 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -1573,7 +1573,10 @@ static void dasd_eckd_do_validate_server(struct work_struct *work)
1573{ 1573{
1574 struct dasd_device *device = container_of(work, struct dasd_device, 1574 struct dasd_device *device = container_of(work, struct dasd_device,
1575 kick_validate); 1575 kick_validate);
1576 if (dasd_eckd_validate_server(device, DASD_CQR_FLAGS_FAILFAST) 1576 unsigned long flags = 0;
1577
1578 set_bit(DASD_CQR_FLAGS_FAILFAST, &flags);
1579 if (dasd_eckd_validate_server(device, flags)
1577 == -EAGAIN) { 1580 == -EAGAIN) {
1578 /* schedule worker again if failed */ 1581 /* schedule worker again if failed */
1579 schedule_work(&device->kick_validate); 1582 schedule_work(&device->kick_validate);
@@ -4157,6 +4160,7 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
4157 int rc; 4160 int rc;
4158 struct dasd_uid temp_uid; 4161 struct dasd_uid temp_uid;
4159 unsigned long flags; 4162 unsigned long flags;
4163 unsigned long cqr_flags = 0;
4160 4164
4161 private = (struct dasd_eckd_private *) device->private; 4165 private = (struct dasd_eckd_private *) device->private;
4162 4166
@@ -4178,7 +4182,9 @@ static int dasd_eckd_restore_device(struct dasd_device *device)
4178 rc = dasd_alias_make_device_known_to_lcu(device); 4182 rc = dasd_alias_make_device_known_to_lcu(device);
4179 if (rc) 4183 if (rc)
4180 return rc; 4184 return rc;
4181 dasd_eckd_validate_server(device, DASD_CQR_FLAGS_FAILFAST); 4185
4186 set_bit(DASD_CQR_FLAGS_FAILFAST, &cqr_flags);
4187 dasd_eckd_validate_server(device, cqr_flags);
4182 4188
4183 /* RE-Read Configuration Data */ 4189 /* RE-Read Configuration Data */
4184 dasd_eckd_read_conf(device); 4190 dasd_eckd_read_conf(device);
diff --git a/drivers/s390/cio/qdio_debug.c b/drivers/s390/cio/qdio_debug.c
index 749b72739c4a..ccaae9d63d27 100644
--- a/drivers/s390/cio/qdio_debug.c
+++ b/drivers/s390/cio/qdio_debug.c
@@ -232,7 +232,8 @@ static struct file_operations debugfs_perf_fops = {
232 .llseek = seq_lseek, 232 .llseek = seq_lseek,
233 .release = single_release, 233 .release = single_release,
234}; 234};
235static void setup_debugfs_entry(struct qdio_q *q, struct ccw_device *cdev) 235
236static void setup_debugfs_entry(struct qdio_q *q)
236{ 237{
237 char name[QDIO_DEBUGFS_NAME_LEN]; 238 char name[QDIO_DEBUGFS_NAME_LEN];
238 239
@@ -263,12 +264,12 @@ void qdio_setup_debug_entries(struct qdio_irq *irq_ptr, struct ccw_device *cdev)
263 irq_ptr->debugfs_perf = NULL; 264 irq_ptr->debugfs_perf = NULL;
264 265
265 for_each_input_queue(irq_ptr, q, i) 266 for_each_input_queue(irq_ptr, q, i)
266 setup_debugfs_entry(q, cdev); 267 setup_debugfs_entry(q);
267 for_each_output_queue(irq_ptr, q, i) 268 for_each_output_queue(irq_ptr, q, i)
268 setup_debugfs_entry(q, cdev); 269 setup_debugfs_entry(q);
269} 270}
270 271
271void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr, struct ccw_device *cdev) 272void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr)
272{ 273{
273 struct qdio_q *q; 274 struct qdio_q *q;
274 int i; 275 int i;
diff --git a/drivers/s390/cio/qdio_debug.h b/drivers/s390/cio/qdio_debug.h
index 7f8b973da298..647b422bb22a 100644
--- a/drivers/s390/cio/qdio_debug.h
+++ b/drivers/s390/cio/qdio_debug.h
@@ -85,8 +85,7 @@ void qdio_allocate_dbf(struct qdio_initialize *init_data,
85 struct qdio_irq *irq_ptr); 85 struct qdio_irq *irq_ptr);
86void qdio_setup_debug_entries(struct qdio_irq *irq_ptr, 86void qdio_setup_debug_entries(struct qdio_irq *irq_ptr,
87 struct ccw_device *cdev); 87 struct ccw_device *cdev);
88void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr, 88void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr);
89 struct ccw_device *cdev);
90int qdio_debug_init(void); 89int qdio_debug_init(void);
91void qdio_debug_exit(void); 90void qdio_debug_exit(void);
92 91
diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c
index abc550e5dd35..843051bc20f1 100644
--- a/drivers/s390/cio/qdio_main.c
+++ b/drivers/s390/cio/qdio_main.c
@@ -1226,7 +1226,7 @@ int qdio_shutdown(struct ccw_device *cdev, int how)
1226 1226
1227 tiqdio_remove_input_queues(irq_ptr); 1227 tiqdio_remove_input_queues(irq_ptr);
1228 qdio_shutdown_queues(cdev); 1228 qdio_shutdown_queues(cdev);
1229 qdio_shutdown_debug_entries(irq_ptr, cdev); 1229 qdio_shutdown_debug_entries(irq_ptr);
1230 1230
1231 /* cleanup subchannel */ 1231 /* cleanup subchannel */
1232 spin_lock_irqsave(get_ccwdev_lock(cdev), flags); 1232 spin_lock_irqsave(get_ccwdev_lock(cdev), flags);