summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-08-22Revert "x86 get_unmapped_area(): use proper mmap base for bottom-up direction"Linus Torvalds
This reverts commit df54d6fa54275ce59660453e29d1228c2b45a826. The commit isn't necessarily wrong, but because it recalculates the random mmap_base every time, it seems to confuse user memory allocators that expect contiguous mmap allocations even when the mmap address isn't specified. In particular, the MATLAB Java runtime seems to be unhappy. See https://bugzilla.kernel.org/show_bug.cgi?id=60774 So we'll want to apply the random offset only once, and Radu has a patch for that. Revert this older commit in order to apply the other one. Reported-by: Jeff Shorey <shoreyjeff@gmail.com> Cc: Radu Caragea <sinaelgl@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-08-22[SCSI] zfcp: remove access control tables interface (keep sysfs files)Martin Peschke
By popular demand, this patch brings back a couple of sysfs attributes removed by commit 663e0890e31cb85f0cca5ac1faaee0d2d52880b5 "[SCSI] zfcp: remove access control tables interface". The content has been irrelevant for years, but the files must be there forever for whatever user space tools that may rely on them. Since these files always return a constant value, a new stripped down show-macro was required. Otherwise build warnings would have been introduced. Signed-off-by: Martin Peschke <mpeschke@linux.vnet.ibm.com> Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-08-22[SCSI] zfcp: fix schedule-inside-lock in scsi_device list loopsMartin Peschke
BUG: sleeping function called from invalid context at kernel/workqueue.c:2752 in_atomic(): 1, irqs_disabled(): 1, pid: 360, name: zfcperp0.0.1700 CPU: 1 Not tainted 3.9.3+ #69 Process zfcperp0.0.1700 (pid: 360, task: 0000000075b7e080, ksp: 000000007476bc30) <snip> Call Trace: ([<00000000001165de>] show_trace+0x106/0x154) [<00000000001166a0>] show_stack+0x74/0xf4 [<00000000006ff646>] dump_stack+0xc6/0xd4 [<000000000017f3a0>] __might_sleep+0x128/0x148 [<000000000015ece8>] flush_work+0x54/0x1f8 [<00000000001630de>] __cancel_work_timer+0xc6/0x128 [<00000000005067ac>] scsi_device_dev_release_usercontext+0x164/0x23c [<0000000000161816>] execute_in_process_context+0x96/0xa8 [<00000000004d33d8>] device_release+0x60/0xc0 [<000000000048af48>] kobject_release+0xa8/0x1c4 [<00000000004f4bf2>] __scsi_iterate_devices+0xfa/0x130 [<000003ff801b307a>] zfcp_erp_strategy+0x4da/0x1014 [zfcp] [<000003ff801b3caa>] zfcp_erp_thread+0xf6/0x2b0 [zfcp] [<000000000016b75a>] kthread+0xf2/0xfc [<000000000070c9de>] kernel_thread_starter+0x6/0xc [<000000000070c9d8>] kernel_thread_starter+0x0/0xc Apparently, the ref_count for some scsi_device drops down to zero, triggering device removal through execute_in_process_context(), while the lldd error recovery thread iterates through a scsi device list. Unfortunately, execute_in_process_context() decides to immediately execute that device removal function, instead of scheduling asynchronous execution, since it detects process context and thinks it is safe to do so. But almost all calls to shost_for_each_device() in our lldd are inside spin_lock_irq, even in thread context. Obviously, schedule() inside spin_lock_irq sections is a bad idea. Change the lldd to use the proper iterator function, __shost_for_each_device(), in combination with required locking. Occurences that need to be changed include all calls in zfcp_erp.c, since those might be executed in zfcp error recovery thread context with a lock held. Other occurences of shost_for_each_device() in zfcp_fsf.c do not need to be changed (no process context, no surrounding locking). The problem was introduced in Linux 2.6.37 by commit b62a8d9b45b971a67a0f8413338c230e3117dff5 "[SCSI] zfcp: Use SCSI device data zfcp_scsi_dev instead of zfcp_unit". Reported-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Martin Peschke <mpeschke@linux.vnet.ibm.com> Cc: stable@vger.kernel.org #2.6.37+ Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-08-22[SCSI] zfcp: fix lock imbalance by reworking request queue lockingMartin Peschke
This patch adds wait_event_interruptible_lock_irq_timeout(), which is a straight-forward descendant of wait_event_interruptible_timeout() and wait_event_interruptible_lock_irq(). The zfcp driver used to call wait_event_interruptible_timeout() in combination with some intricate and error-prone locking. Using wait_event_interruptible_lock_irq_timeout() as a replacement nicely cleans up that locking. This rework removes a situation that resulted in a locking imbalance in zfcp_qdio_sbal_get(): BUG: workqueue leaked lock or atomic: events/1/0xffffff00/10 last function: zfcp_fc_wka_port_offline+0x0/0xa0 [zfcp] It was introduced by commit c2af7545aaff3495d9bf9a7608c52f0af86fb194 "[SCSI] zfcp: Do not wait for SBALs on stopped queue", which had a new code path related to ZFCP_STATUS_ADAPTER_QDIOUP that took an early exit without a required lock being held. The problem occured when a special, non-SCSI I/O request was being submitted in process context, when the adapter's queues had been torn down. In this case the bug surfaced when the Fibre Channel port connection for a well-known address was closed during a concurrent adapter shut-down procedure, which is a rare constellation. This patch also fixes these warnings from the sparse tool (make C=1): drivers/s390/scsi/zfcp_qdio.c:224:12: warning: context imbalance in 'zfcp_qdio_sbal_check' - wrong count at exit drivers/s390/scsi/zfcp_qdio.c:244:5: warning: context imbalance in 'zfcp_qdio_sbal_get' - unexpected unlock Last but not least, we get rid of that crappy lock-unlock-lock sequence at the beginning of the critical section. It is okay to call zfcp_erp_adapter_reopen() with req_q_lock held. Reported-by: Mikulas Patocka <mpatocka@redhat.com> Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Peschke <mpeschke@linux.vnet.ibm.com> Cc: stable@vger.kernel.org #2.6.35+ Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8994' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8962' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8960' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8904' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8782' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8753' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8731' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8727' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm8350' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wm0010' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/wl1273' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/ux500' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/uda134x' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/txx9' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/twl6040' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/twl4030' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/tlv320aic3x' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/tlv320aic26' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/tegra' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/sta32x' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/spdif' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/si476x' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/sgtl5000' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/samsung' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/s6000' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/rt5640' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/rcar' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/pxa' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/pcm3008' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/pcm1792a' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/pcm1681' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/omap' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/nuc900' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/new-pcm' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/mxs' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/mc13783' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/max9877' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/max98090' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/max9768' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/lm4857' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/kirkwood' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/hdmi' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/fsl' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/ep93xx' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/dma' into asoc-nextMark Brown
2013-08-22Merge remote-tracking branch 'asoc/topic/dapm' into asoc-nextMark Brown