<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/scsi, branch v3.11.7</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>esp_scsi: Fix tag state corruption when autosensing.</title>
<updated>2013-10-14T01:14:29+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2013-08-02T01:08:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7de5c6bba258f2d3390ed73c938a98f15440213b'/>
<id>7de5c6bba258f2d3390ed73c938a98f15440213b</id>
<content type='text'>
[ Upstream commit 21af8107f27878813d0364733c0b08813c2c192a ]

Meelis Roos reports a crash in esp_free_lun_tag() in the presense
of a disk which has died.

The issue is that when we issue an autosense command, we do so by
hijacking the original command that caused the check-condition.

When we do so we clear out the ent-&gt;tag[] array when we issue it via
find_and_prep_issuable_command().  This is so that the autosense
command is forced to be issued non-tagged.

That is problematic, because it is the value of ent-&gt;tag[] which
determines whether we issued the original scsi command as tagged
vs. non-tagged (see esp_alloc_lun_tag()).

And that, in turn, is what trips up the sanity checks in
esp_free_lun_tag().  That function needs the original -&gt;tag[] values
in order to free up the tag slot properly.

Fix this by remembering the original command's tag values, and
having esp_alloc_lun_tag() and esp_free_lun_tag() use them.

Reported-by: Meelis Roos &lt;mroos@linux.ee&gt;
Tested-by: Meelis Roos &lt;mroos@linux.ee&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 21af8107f27878813d0364733c0b08813c2c192a ]

Meelis Roos reports a crash in esp_free_lun_tag() in the presense
of a disk which has died.

The issue is that when we issue an autosense command, we do so by
hijacking the original command that caused the check-condition.

When we do so we clear out the ent-&gt;tag[] array when we issue it via
find_and_prep_issuable_command().  This is so that the autosense
command is forced to be issued non-tagged.

That is problematic, because it is the value of ent-&gt;tag[] which
determines whether we issued the original scsi command as tagged
vs. non-tagged (see esp_alloc_lun_tag()).

And that, in turn, is what trips up the sanity checks in
esp_free_lun_tag().  That function needs the original -&gt;tag[] values
in order to free up the tag slot properly.

Fix this by remembering the original command's tag values, and
having esp_alloc_lun_tag() and esp_free_lun_tag() use them.

Reported-by: Meelis Roos &lt;mroos@linux.ee&gt;
Tested-by: Meelis Roos &lt;mroos@linux.ee&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>SCSI: sd: Fix potential out-of-bounds access</title>
<updated>2013-09-27T00:21:35+00:00</updated>
<author>
<name>Alan Stern</name>
<email>stern@rowland.harvard.edu</email>
</author>
<published>2013-09-06T15:49:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9ed42ce59457ba8df30d345278f3c079ca61b595'/>
<id>9ed42ce59457ba8df30d345278f3c079ca61b595</id>
<content type='text'>
commit 984f1733fcee3fbc78d47e26c5096921c5d9946a upstream.

This patch fixes an out-of-bounds error in sd_read_cache_type(), found
by Google's AddressSanitizer tool.  When the loop ends, we know that
"offset" lies beyond the end of the data in the buffer, so no Caching
mode page was found.  In theory it may be present, but the buffer size
is limited to 512 bytes.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 984f1733fcee3fbc78d47e26c5096921c5d9946a upstream.

This patch fixes an out-of-bounds error in sd_read_cache_type(), found
by Google's AddressSanitizer tool.  When the loop ends, we know that
"offset" lies beyond the end of the data in the buffer, so no Caching
mode page was found.  In theory it may be present, but the buffer size
is limited to 512 bytes.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Reported-by: Dmitry Vyukov &lt;dvyukov@google.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>SCSI: Allow MPT Fusion SAS 3.0 driver to be built into the kernel</title>
<updated>2013-09-27T00:21:22+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2013-09-03T22:00:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=97bd47aaaeff070e7907a6a0be78329e8c783feb'/>
<id>97bd47aaaeff070e7907a6a0be78329e8c783feb</id>
<content type='text'>
commit 9807b4d94911be4e4efb9a08481b24292a9edf8a upstream.

Right now the Makefile for the mpt3sas driver does not even allow the
driver to be built into the kernel.  So fix that up, as there doesn't
seem to be any obvious reason why this shouldn't be done.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Acked-by: Sreekanth Reddy &lt;Sreekanth.Reddy@lsi.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 9807b4d94911be4e4efb9a08481b24292a9edf8a upstream.

Right now the Makefile for the mpt3sas driver does not even allow the
driver to be built into the kernel.  So fix that up, as there doesn't
seem to be any obvious reason why this shouldn't be done.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Acked-by: Sreekanth Reddy &lt;Sreekanth.Reddy@lsi.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>[SCSI] pm80xx: fix Adaptec 71605H hang</title>
<updated>2013-08-26T09:33:58+00:00</updated>
<author>
<name>Hans Verkuil</name>
<email>hverkuil@xs4all.nl</email>
</author>
<published>2013-07-26T16:43:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9504a923924d663e1953f872f0a828e6454a6cfc'/>
<id>9504a923924d663e1953f872f0a828e6454a6cfc</id>
<content type='text'>
The IO command size is 128 bytes for these new controllers as opposed to 64
for the old 8001 controller.

The Adaptec out-of-tree driver did this correctly. After comparing the two
this turned out to be the crucial difference.

So don't hardcode the IO command size, instead use pm8001_ha-&gt;iomb_size as
that is the correct value for both old and new controllers.

Signed-off-by: Hans Verkuil &lt;hans.verkuil@cisco.com&gt;
Acked-by: Anand Kumar Santhanam &lt;AnandKumar.Santhanam@pmcs.com&gt;
Acked-by: Jack Wang &lt;xjtuwjp@gmail.com&gt;
Cc: stable@vger.kernel.org      # for v3.10 and up
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The IO command size is 128 bytes for these new controllers as opposed to 64
for the old 8001 controller.

The Adaptec out-of-tree driver did this correctly. After comparing the two
this turned out to be the crucial difference.

So don't hardcode the IO command size, instead use pm8001_ha-&gt;iomb_size as
that is the correct value for both old and new controllers.

Signed-off-by: Hans Verkuil &lt;hans.verkuil@cisco.com&gt;
Acked-by: Anand Kumar Santhanam &lt;AnandKumar.Santhanam@pmcs.com&gt;
Acked-by: Jack Wang &lt;xjtuwjp@gmail.com&gt;
Cc: stable@vger.kernel.org      # for v3.10 and up
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCSI] lpfc: Don't force CONFIG_GENERIC_CSUM on</title>
<updated>2013-08-21T17:54:20+00:00</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2013-08-08T07:47:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f5944daa0a72316077435c18a6571e73ed338332'/>
<id>f5944daa0a72316077435c18a6571e73ed338332</id>
<content type='text'>
We want ppc64 to be able to select between optimised assembly
checksum routines in big endian and the generic lib/checksum.c
routines in little endian.

The lpfc driver is forcing CONFIG_GENERIC_CSUM on which means
we are unable to make the decision to enable it in the arch
Kconfig. If the option exists it is always forced on.

This got introduced in 3.10 via commit 6a7252fdb0c3 ([SCSI] lpfc:
fix up Kconfig dependencies). I spoke to Randy about it and
the original issue was with CRC_T10DIF not being defined.

As such, remove the select of CONFIG_GENERIC_CSUM.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.10
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We want ppc64 to be able to select between optimised assembly
checksum routines in big endian and the generic lib/checksum.c
routines in little endian.

The lpfc driver is forcing CONFIG_GENERIC_CSUM on which means
we are unable to make the decision to enable it in the arch
Kconfig. If the option exists it is always forced on.

This got introduced in 3.10 via commit 6a7252fdb0c3 ([SCSI] lpfc:
fix up Kconfig dependencies). I spoke to Randy about it and
the original issue was with CRC_T10DIF not being defined.

As such, remove the select of CONFIG_GENERIC_CSUM.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Cc: &lt;stable@vger.kernel.org&gt; # 3.10
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi</title>
<updated>2013-08-11T23:32:26+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-08-11T23:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e5d081f4686f9c6be8ab3d34dfcdb0afdbbdeefd'/>
<id>e5d081f4686f9c6be8ab3d34dfcdb0afdbbdeefd</id>
<content type='text'>
Pull SCSI fixes from James Bottomley:
 "This is three bug fixes: An fnic warning caused by sleeping under a
  lock, a major regression with our updated WRITE SAME/UNMAP logic which
  caused tons of USB devices (and one RAID card) to cease to function
  and a megaraid_sas firmware initialisation problem which causes kdump
  failures"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  [SCSI] Don't attempt to send extended INQUIRY command if skip_vpd_pages is set
  [SCSI] fnic: BUG: sleeping function called from invalid context during probe
  [SCSI] megaraid_sas: megaraid_sas driver init fails in kdump kernel
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull SCSI fixes from James Bottomley:
 "This is three bug fixes: An fnic warning caused by sleeping under a
  lock, a major regression with our updated WRITE SAME/UNMAP logic which
  caused tons of USB devices (and one RAID card) to cease to function
  and a megaraid_sas firmware initialisation problem which causes kdump
  failures"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
  [SCSI] Don't attempt to send extended INQUIRY command if skip_vpd_pages is set
  [SCSI] fnic: BUG: sleeping function called from invalid context during probe
  [SCSI] megaraid_sas: megaraid_sas driver init fails in kdump kernel
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux</title>
<updated>2013-08-08T16:32:20+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2013-08-08T16:32:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bb014db07ce04851f0e19ef5c0f15ad0021ec38c'/>
<id>bb014db07ce04851f0e19ef5c0f15ad0021ec38c</id>
<content type='text'>
Pull virtio fixes from Rusty Russell:
 "More virtio console fixes than I'm happy with, but all real issues,
  and all CC:stable.."

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  virtio-scsi: Fix virtqueue affinity setup
  virtio: console: return -ENODEV on all read operations after unplug
  virtio: console: fix raising SIGIO after port unplug
  virtio: console: clean up port data immediately at time of unplug
  virtio: console: fix race in port_fops_open() and port unplug
  virtio: console: fix race with port unplug and open/close
  virtio/console: Add pipe_lock/unlock for splice_write
  virtio/console: Quit from splice_write if pipe-&gt;nrbufs is 0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull virtio fixes from Rusty Russell:
 "More virtio console fixes than I'm happy with, but all real issues,
  and all CC:stable.."

* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  virtio-scsi: Fix virtqueue affinity setup
  virtio: console: return -ENODEV on all read operations after unplug
  virtio: console: fix raising SIGIO after port unplug
  virtio: console: clean up port data immediately at time of unplug
  virtio: console: fix race in port_fops_open() and port unplug
  virtio: console: fix race with port unplug and open/close
  virtio/console: Add pipe_lock/unlock for splice_write
  virtio/console: Quit from splice_write if pipe-&gt;nrbufs is 0
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCSI] Don't attempt to send extended INQUIRY command if skip_vpd_pages is set</title>
<updated>2013-08-02T20:20:21+00:00</updated>
<author>
<name>Martin K. Petersen</name>
<email>martin.petersen@oracle.com</email>
</author>
<published>2013-07-31T02:58:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7562523e84ddc742fe1f9db8bd76b01acca89f6b'/>
<id>7562523e84ddc742fe1f9db8bd76b01acca89f6b</id>
<content type='text'>
If a device has the skip_vpd_pages flag set we should simply fail the
scsi_get_vpd_page() call.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Tested-by: Stuart Foster &lt;smf.linux@ntlworld.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a device has the skip_vpd_pages flag set we should simply fail the
scsi_get_vpd_page() call.

Signed-off-by: Martin K. Petersen &lt;martin.petersen@oracle.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Tested-by: Stuart Foster &lt;smf.linux@ntlworld.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCSI] fnic: BUG: sleeping function called from invalid context during probe</title>
<updated>2013-08-02T20:16:38+00:00</updated>
<author>
<name>Chris Leech</name>
<email>cleech@redhat.com</email>
</author>
<published>2013-07-23T20:04:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e09056b25c38357df5c01985a0b3af608bccbfc0'/>
<id>e09056b25c38357df5c01985a0b3af608bccbfc0</id>
<content type='text'>
I hit this during driver probe with the latest fnic updates (this trace
is from a backport into a distro kernel, but the issue is the same).

&gt; BUG: sleeping function called from invalid context at mm/slab.c:3113
&gt; in_atomic(): 0, irqs_disabled(): 1, pid: 610, name: work_for_cpu
&gt; INFO: lockdep is turned off.
&gt; irq event stamp: 0
&gt; hardirqs last  enabled at (0): [&lt;(null)&gt;] (null)
&gt; hardirqs last disabled at (0): [&lt;ffffffff81070aa5&gt;]
&gt; copy_process+0x5e5/0x1670
&gt; softirqs last  enabled at (0): [&lt;ffffffff81070aa5&gt;]
&gt; copy_process+0x5e5/0x1670
&gt; softirqs last disabled at (0): [&lt;(null)&gt;] (null)
&gt; Pid: 610, comm: work_for_cpu Not tainted
&gt; Call Trace:
&gt;  [&lt;ffffffff810b2d10&gt;] ? print_irqtrace_events+0xd0/0xe0
&gt;  [&lt;ffffffff8105c1a7&gt;] ? __might_sleep+0xf7/0x130
&gt;  [&lt;ffffffff81184efb&gt;] ? kmem_cache_alloc_trace+0x20b/0x2d0
&gt;  [&lt;ffffffff8109709e&gt;] ? __create_workqueue_key+0x3e/0x1d0
&gt;  [&lt;ffffffff8109709e&gt;] ? __create_workqueue_key+0x3e/0x1d0
&gt;  [&lt;ffffffffa00c101c&gt;] ? fnic_probe+0x977/0x11aa [fnic]
&gt;  [&lt;ffffffffa00c1048&gt;] ? fnic_probe+0x9a3/0x11aa [fnic]
&gt;  [&lt;ffffffff81096f00&gt;] ? do_work_for_cpu+0x0/0x30
&gt;  [&lt;ffffffff812c6da7&gt;] ? local_pci_probe+0x17/0x20
&gt;  [&lt;ffffffff81096f18&gt;] ? do_work_for_cpu+0x18/0x30
&gt;  [&lt;ffffffff8109cdc6&gt;] ? kthread+0x96/0xa0
&gt;  [&lt;ffffffff8100c1ca&gt;] ? child_rip+0xa/0x20
&gt;  [&lt;ffffffff81550f80&gt;] ? _spin_unlock_irq+0x30/0x40
&gt;  [&lt;ffffffff8100bb10&gt;] ? restore_args+0x0/0x30
&gt;  [&lt;ffffffff8109cd30&gt;] ? kthread+0x0/0xa0
&gt;  [&lt;ffffffff8100c1c0&gt;] ? child_rip+0x0/0x20

The problem is in this hunk of "FIP VLAN Discovery Feature Support"
(d3c995f1dcf938f1084388d92b8fb97bec366566)

create_singlethreaded_workqueue cannot be called with irqs disabled

@@ -620,7 +634,29 @@ static int __devinit fnic_probe(struct pci_dev
*pdev,
        vnic_dev_packet_filter(fnic-&gt;vdev, 1, 1, 0, 0, 0);
        vnic_dev_add_addr(fnic-&gt;vdev, FIP_ALL_ENODE_MACS);
        vnic_dev_add_addr(fnic-&gt;vdev, fnic-&gt;ctlr.ctl_src_addr);
+       fnic-&gt;set_vlan = fnic_set_vlan;
        fcoe_ctlr_init(&amp;fnic-&gt;ctlr, FIP_MODE_AUTO);
+       setup_timer(&amp;fnic-&gt;fip_timer, fnic_fip_notify_timer,
+                           (unsigned long)fnic);
+       spin_lock_init(&amp;fnic-&gt;vlans_lock);
+       INIT_WORK(&amp;fnic-&gt;fip_frame_work, fnic_handle_fip_frame);
+       INIT_WORK(&amp;fnic-&gt;event_work, fnic_handle_event);
+       skb_queue_head_init(&amp;fnic-&gt;fip_frame_queue);
+       spin_lock_irqsave(&amp;fnic_list_lock, flags);
+       if (!fnic_fip_queue) {
+           fnic_fip_queue =
+               create_singlethread_workqueue("fnic_fip_q");
+           if (!fnic_fip_queue) {
+               spin_unlock_irqrestore(&amp;fnic_list_lock, flags);
+               printk(KERN_ERR PFX "fnic FIP work queue "
+                        "create failed\n");
+               err = -ENOMEM;
+               goto err_out_free_max_pool;
+           }
+       }
+       spin_unlock_irqrestore(&amp;fnic_list_lock, flags);
+       INIT_LIST_HEAD(&amp;fnic-&gt;evlist);
+       INIT_LIST_HEAD(&amp;fnic-&gt;vlans);
    } else {
        shost_printk(KERN_INFO, fnic-&gt;lport-&gt;host,
                 "firmware uses non-FIP mode\n");

The attempts to make fnic_fip_queue a single instance for the driver
while it's being created in probe look awkward anyway, why is this not
created in fnic_init_module like the event workqueue?

Signed-off-by: Chris Leech &lt;cleech@redhat.com&gt;
Tested-by: Anantha Tungarakodi &lt;atungara@cisco.com&gt;
Acked-by: Hiral Patel &lt;hiralpat@cisco.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I hit this during driver probe with the latest fnic updates (this trace
is from a backport into a distro kernel, but the issue is the same).

&gt; BUG: sleeping function called from invalid context at mm/slab.c:3113
&gt; in_atomic(): 0, irqs_disabled(): 1, pid: 610, name: work_for_cpu
&gt; INFO: lockdep is turned off.
&gt; irq event stamp: 0
&gt; hardirqs last  enabled at (0): [&lt;(null)&gt;] (null)
&gt; hardirqs last disabled at (0): [&lt;ffffffff81070aa5&gt;]
&gt; copy_process+0x5e5/0x1670
&gt; softirqs last  enabled at (0): [&lt;ffffffff81070aa5&gt;]
&gt; copy_process+0x5e5/0x1670
&gt; softirqs last disabled at (0): [&lt;(null)&gt;] (null)
&gt; Pid: 610, comm: work_for_cpu Not tainted
&gt; Call Trace:
&gt;  [&lt;ffffffff810b2d10&gt;] ? print_irqtrace_events+0xd0/0xe0
&gt;  [&lt;ffffffff8105c1a7&gt;] ? __might_sleep+0xf7/0x130
&gt;  [&lt;ffffffff81184efb&gt;] ? kmem_cache_alloc_trace+0x20b/0x2d0
&gt;  [&lt;ffffffff8109709e&gt;] ? __create_workqueue_key+0x3e/0x1d0
&gt;  [&lt;ffffffff8109709e&gt;] ? __create_workqueue_key+0x3e/0x1d0
&gt;  [&lt;ffffffffa00c101c&gt;] ? fnic_probe+0x977/0x11aa [fnic]
&gt;  [&lt;ffffffffa00c1048&gt;] ? fnic_probe+0x9a3/0x11aa [fnic]
&gt;  [&lt;ffffffff81096f00&gt;] ? do_work_for_cpu+0x0/0x30
&gt;  [&lt;ffffffff812c6da7&gt;] ? local_pci_probe+0x17/0x20
&gt;  [&lt;ffffffff81096f18&gt;] ? do_work_for_cpu+0x18/0x30
&gt;  [&lt;ffffffff8109cdc6&gt;] ? kthread+0x96/0xa0
&gt;  [&lt;ffffffff8100c1ca&gt;] ? child_rip+0xa/0x20
&gt;  [&lt;ffffffff81550f80&gt;] ? _spin_unlock_irq+0x30/0x40
&gt;  [&lt;ffffffff8100bb10&gt;] ? restore_args+0x0/0x30
&gt;  [&lt;ffffffff8109cd30&gt;] ? kthread+0x0/0xa0
&gt;  [&lt;ffffffff8100c1c0&gt;] ? child_rip+0x0/0x20

The problem is in this hunk of "FIP VLAN Discovery Feature Support"
(d3c995f1dcf938f1084388d92b8fb97bec366566)

create_singlethreaded_workqueue cannot be called with irqs disabled

@@ -620,7 +634,29 @@ static int __devinit fnic_probe(struct pci_dev
*pdev,
        vnic_dev_packet_filter(fnic-&gt;vdev, 1, 1, 0, 0, 0);
        vnic_dev_add_addr(fnic-&gt;vdev, FIP_ALL_ENODE_MACS);
        vnic_dev_add_addr(fnic-&gt;vdev, fnic-&gt;ctlr.ctl_src_addr);
+       fnic-&gt;set_vlan = fnic_set_vlan;
        fcoe_ctlr_init(&amp;fnic-&gt;ctlr, FIP_MODE_AUTO);
+       setup_timer(&amp;fnic-&gt;fip_timer, fnic_fip_notify_timer,
+                           (unsigned long)fnic);
+       spin_lock_init(&amp;fnic-&gt;vlans_lock);
+       INIT_WORK(&amp;fnic-&gt;fip_frame_work, fnic_handle_fip_frame);
+       INIT_WORK(&amp;fnic-&gt;event_work, fnic_handle_event);
+       skb_queue_head_init(&amp;fnic-&gt;fip_frame_queue);
+       spin_lock_irqsave(&amp;fnic_list_lock, flags);
+       if (!fnic_fip_queue) {
+           fnic_fip_queue =
+               create_singlethread_workqueue("fnic_fip_q");
+           if (!fnic_fip_queue) {
+               spin_unlock_irqrestore(&amp;fnic_list_lock, flags);
+               printk(KERN_ERR PFX "fnic FIP work queue "
+                        "create failed\n");
+               err = -ENOMEM;
+               goto err_out_free_max_pool;
+           }
+       }
+       spin_unlock_irqrestore(&amp;fnic_list_lock, flags);
+       INIT_LIST_HEAD(&amp;fnic-&gt;evlist);
+       INIT_LIST_HEAD(&amp;fnic-&gt;vlans);
    } else {
        shost_printk(KERN_INFO, fnic-&gt;lport-&gt;host,
                 "firmware uses non-FIP mode\n");

The attempts to make fnic_fip_queue a single instance for the driver
while it's being created in probe look awkward anyway, why is this not
created in fnic_init_module like the event workqueue?

Signed-off-by: Chris Leech &lt;cleech@redhat.com&gt;
Tested-by: Anantha Tungarakodi &lt;atungara@cisco.com&gt;
Acked-by: Hiral Patel &lt;hiralpat@cisco.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[SCSI] megaraid_sas: megaraid_sas driver init fails in kdump kernel</title>
<updated>2013-08-02T20:01:29+00:00</updated>
<author>
<name>Sumit.Saxena@lsi.com</name>
<email>Sumit.Saxena@lsi.com</email>
</author>
<published>2013-07-15T20:56:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6431f5d7c6025f8b007af06ea090de308f7e6881'/>
<id>6431f5d7c6025f8b007af06ea090de308f7e6881</id>
<content type='text'>
Problem: When Hardware IOMMU is on, megaraid_sas driver initialization fails
in kdump kernel with LSI MegaRAID controller(device id-0x73).

Actually this issue needs fix in firmware, but for firmware running in field,
this driver fix is proposed to resolve the issue.  At firmware initialization
time, if firmware does not come to ready state, driver will reset the adapter
and retry for firmware transition to ready state unconditionally(not only
executed for kdump kernel).

Signed-off-by: Sumit Saxena &lt;sumit.saxena@lsi.com&gt;
Signed-off-by: Kashyap Desai &lt;kashyap.desai@lsi.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: When Hardware IOMMU is on, megaraid_sas driver initialization fails
in kdump kernel with LSI MegaRAID controller(device id-0x73).

Actually this issue needs fix in firmware, but for firmware running in field,
this driver fix is proposed to resolve the issue.  At firmware initialization
time, if firmware does not come to ready state, driver will reset the adapter
and retry for firmware transition to ready state unconditionally(not only
executed for kdump kernel).

Signed-off-by: Sumit Saxena &lt;sumit.saxena@lsi.com&gt;
Signed-off-by: Kashyap Desai &lt;kashyap.desai@lsi.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
