<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/scsi, branch v3.4.89</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>SCSI: arcmsr: upper 32 of dma address lost</title>
<updated>2014-05-06T14:51:43+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2014-02-11T16:06:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8ba4bc7680f75ac3294cb3222b21bc2912b24963'/>
<id>8ba4bc7680f75ac3294cb3222b21bc2912b24963</id>
<content type='text'>
commit e2c70425f05219b142b3a8a9489a622c736db39d upstream.

The original code always set the upper 32 bits to zero because it was
doing a shift of the wrong variable.

Fixes: 1a4f550a09f8 ('[SCSI] arcmsr: 1.20.00.15: add SATA RAID plus other fixes')
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.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 e2c70425f05219b142b3a8a9489a622c736db39d upstream.

The original code always set the upper 32 bits to zero because it was
doing a shift of the wrong variable.

Fixes: 1a4f550a09f8 ('[SCSI] arcmsr: 1.20.00.15: add SATA RAID plus other fixes')
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.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: storvsc: NULL pointer dereference fix</title>
<updated>2014-03-24T04:37:08+00:00</updated>
<author>
<name>Ales Novak</name>
<email>alnovak@suse.cz</email>
</author>
<published>2014-02-27T10:03:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7c1de3509ed50e5091ee1344689e6c0552943787'/>
<id>7c1de3509ed50e5091ee1344689e6c0552943787</id>
<content type='text'>
commit b12bb60d6c350b348a4e1460cd68f97ccae9822e upstream.

If the initialization of storvsc fails, the storvsc_device_destroy()
causes NULL pointer dereference.

storvsc_bus_scan()
  scsi_scan_target()
    __scsi_scan_target()
      scsi_probe_and_add_lun(hostdata=NULL)
        scsi_alloc_sdev(hostdata=NULL)

	  sdev-&gt;hostdata = hostdata

	  now the host allocation fails

          __scsi_remove_device(sdev)

	  calls sdev-&gt;host-&gt;hostt-&gt;slave_destroy() ==
	  storvsc_device_destroy(sdev)
	    access of sdev-&gt;hostdata-&gt;request_mempool

Signed-off-by: Ales Novak &lt;alnovak@suse.cz&gt;
Signed-off-by: Thomas Abraham &lt;tabraham@suse.com&gt;
Reviewed-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Acked-by: K. Y. Srinivasan &lt;kys@microsoft.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 b12bb60d6c350b348a4e1460cd68f97ccae9822e upstream.

If the initialization of storvsc fails, the storvsc_device_destroy()
causes NULL pointer dereference.

storvsc_bus_scan()
  scsi_scan_target()
    __scsi_scan_target()
      scsi_probe_and_add_lun(hostdata=NULL)
        scsi_alloc_sdev(hostdata=NULL)

	  sdev-&gt;hostdata = hostdata

	  now the host allocation fails

          __scsi_remove_device(sdev)

	  calls sdev-&gt;host-&gt;hostt-&gt;slave_destroy() ==
	  storvsc_device_destroy(sdev)
	    access of sdev-&gt;hostdata-&gt;request_mempool

Signed-off-by: Ales Novak &lt;alnovak@suse.cz&gt;
Signed-off-by: Thomas Abraham &lt;tabraham@suse.com&gt;
Reviewed-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Acked-by: K. Y. Srinivasan &lt;kys@microsoft.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: qla2xxx: Poll during initialization for ISP25xx and ISP83xx</title>
<updated>2014-03-24T04:37:07+00:00</updated>
<author>
<name>Giridhar Malavali</name>
<email>giridhar.malavali@qlogic.com</email>
</author>
<published>2014-02-26T09:15:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3ce68dc6e9d3126c33a52879f9d0d45da670bfc0'/>
<id>3ce68dc6e9d3126c33a52879f9d0d45da670bfc0</id>
<content type='text'>
commit b77ed25c9f8402e8b3e49e220edb4ef09ecfbb53 upstream.

Signed-off-by: Giridhar Malavali &lt;giridhar.malavali@qlogic.com&gt;
Signed-off-by: Saurav Kashyap &lt;saurav.kashyap@qlogic.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 b77ed25c9f8402e8b3e49e220edb4ef09ecfbb53 upstream.

Signed-off-by: Giridhar Malavali &lt;giridhar.malavali@qlogic.com&gt;
Signed-off-by: Saurav Kashyap &lt;saurav.kashyap@qlogic.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: isci: correct erroneous for_each_isci_host macro</title>
<updated>2014-03-24T04:37:07+00:00</updated>
<author>
<name>Lukasz Dorau</name>
<email>lukasz.dorau@intel.com</email>
</author>
<published>2014-02-06T20:23:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d9e8942e554ef56cdfb4166fac2245f40faa1299'/>
<id>d9e8942e554ef56cdfb4166fac2245f40faa1299</id>
<content type='text'>
commit c59053a23d586675c25d789a7494adfdc02fba57 upstream.

In the first place, the loop 'for' in the macro 'for_each_isci_host'
(drivers/scsi/isci/host.h:314) is incorrect, because it accesses
the 3rd element of 2 element array. After the 2nd iteration it executes
the instruction:
        ihost = to_pci_info(pdev)-&gt;hosts[2]
(while the size of the 'hosts' array equals 2) and reads an
out of range element.

In the second place, this loop is incorrectly optimized by GCC v4.8
(see http://marc.info/?l=linux-kernel&amp;m=138998871911336&amp;w=2).
As a result, on platforms with two SCU controllers,
the loop is executed more times than it can be (for i=0,1 and 2).
It causes kernel panic during entering the S3 state
and the following oops after 'rmmod isci':

BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [&lt;ffffffff8131360b&gt;] __list_add+0x1b/0xc0
Oops: 0000 [#1] SMP
RIP: 0010:[&lt;ffffffff8131360b&gt;]  [&lt;ffffffff8131360b&gt;] __list_add+0x1b/0xc0
Call Trace:
  [&lt;ffffffff81661b84&gt;] __mutex_lock_slowpath+0x114/0x1b0
  [&lt;ffffffff81661c3f&gt;] mutex_lock+0x1f/0x30
  [&lt;ffffffffa03e97cb&gt;] sas_disable_events+0x1b/0x50 [libsas]
  [&lt;ffffffffa03e9818&gt;] sas_unregister_ha+0x18/0x60 [libsas]
  [&lt;ffffffffa040316e&gt;] isci_unregister+0x1e/0x40 [isci]
  [&lt;ffffffffa0403efd&gt;] isci_pci_remove+0x5d/0x100 [isci]
  [&lt;ffffffff813391cb&gt;] pci_device_remove+0x3b/0xb0
  [&lt;ffffffff813fbf7f&gt;] __device_release_driver+0x7f/0xf0
  [&lt;ffffffff813fc8f8&gt;] driver_detach+0xa8/0xb0
  [&lt;ffffffff813fbb8b&gt;] bus_remove_driver+0x9b/0x120
  [&lt;ffffffff813fcf2c&gt;] driver_unregister+0x2c/0x50
  [&lt;ffffffff813381f3&gt;] pci_unregister_driver+0x23/0x80
  [&lt;ffffffffa04152f8&gt;] isci_exit+0x10/0x1e [isci]
  [&lt;ffffffff810d199b&gt;] SyS_delete_module+0x16b/0x2d0
  [&lt;ffffffff81012a21&gt;] ? do_notify_resume+0x61/0xa0
  [&lt;ffffffff8166ce29&gt;] system_call_fastpath+0x16/0x1b

The loop has been corrected.
This patch fixes kernel panic during entering the S3 state
and the above oops.

Signed-off-by: Lukasz Dorau &lt;lukasz.dorau@intel.com&gt;
Reviewed-by: Maciej Patelczyk &lt;maciej.patelczyk@intel.com&gt;
Tested-by: Lukasz Dorau &lt;lukasz.dorau@intel.com&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.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 c59053a23d586675c25d789a7494adfdc02fba57 upstream.

In the first place, the loop 'for' in the macro 'for_each_isci_host'
(drivers/scsi/isci/host.h:314) is incorrect, because it accesses
the 3rd element of 2 element array. After the 2nd iteration it executes
the instruction:
        ihost = to_pci_info(pdev)-&gt;hosts[2]
(while the size of the 'hosts' array equals 2) and reads an
out of range element.

In the second place, this loop is incorrectly optimized by GCC v4.8
(see http://marc.info/?l=linux-kernel&amp;m=138998871911336&amp;w=2).
As a result, on platforms with two SCU controllers,
the loop is executed more times than it can be (for i=0,1 and 2).
It causes kernel panic during entering the S3 state
and the following oops after 'rmmod isci':

BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [&lt;ffffffff8131360b&gt;] __list_add+0x1b/0xc0
Oops: 0000 [#1] SMP
RIP: 0010:[&lt;ffffffff8131360b&gt;]  [&lt;ffffffff8131360b&gt;] __list_add+0x1b/0xc0
Call Trace:
  [&lt;ffffffff81661b84&gt;] __mutex_lock_slowpath+0x114/0x1b0
  [&lt;ffffffff81661c3f&gt;] mutex_lock+0x1f/0x30
  [&lt;ffffffffa03e97cb&gt;] sas_disable_events+0x1b/0x50 [libsas]
  [&lt;ffffffffa03e9818&gt;] sas_unregister_ha+0x18/0x60 [libsas]
  [&lt;ffffffffa040316e&gt;] isci_unregister+0x1e/0x40 [isci]
  [&lt;ffffffffa0403efd&gt;] isci_pci_remove+0x5d/0x100 [isci]
  [&lt;ffffffff813391cb&gt;] pci_device_remove+0x3b/0xb0
  [&lt;ffffffff813fbf7f&gt;] __device_release_driver+0x7f/0xf0
  [&lt;ffffffff813fc8f8&gt;] driver_detach+0xa8/0xb0
  [&lt;ffffffff813fbb8b&gt;] bus_remove_driver+0x9b/0x120
  [&lt;ffffffff813fcf2c&gt;] driver_unregister+0x2c/0x50
  [&lt;ffffffff813381f3&gt;] pci_unregister_driver+0x23/0x80
  [&lt;ffffffffa04152f8&gt;] isci_exit+0x10/0x1e [isci]
  [&lt;ffffffff810d199b&gt;] SyS_delete_module+0x16b/0x2d0
  [&lt;ffffffff81012a21&gt;] ? do_notify_resume+0x61/0xa0
  [&lt;ffffffff8166ce29&gt;] system_call_fastpath+0x16/0x1b

The loop has been corrected.
This patch fixes kernel panic during entering the S3 state
and the above oops.

Signed-off-by: Lukasz Dorau &lt;lukasz.dorau@intel.com&gt;
Reviewed-by: Maciej Patelczyk &lt;maciej.patelczyk@intel.com&gt;
Tested-by: Lukasz Dorau &lt;lukasz.dorau@intel.com&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.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: isci: fix reset timeout handling</title>
<updated>2014-03-24T04:37:07+00:00</updated>
<author>
<name>Dan Williams</name>
<email>dan.j.williams@intel.com</email>
</author>
<published>2014-02-06T20:23:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ff441dfac9b76ec26200b999c34ff09ecfe05672'/>
<id>ff441dfac9b76ec26200b999c34ff09ecfe05672</id>
<content type='text'>
commit ddfadd7736b677de2d4ca2cd5b4b655368c85a7a upstream.

Remove an erroneous BUG_ON() in the case of a hard reset timeout.  The
reset timeout handler puts the port into the "awaiting link-up" state.
The timeout causes the device to be disconnected and we need to be in
the awaiting link-up state to re-connect the port.  The BUG_ON() made
the incorrect assumption that resets never timeout and we always
complete the reset in the "resetting" state.

Testing this patch also uncovered that libata continues to attempt to
reset the port long after the driver has torn down the context.  Once
the driver has committed to abandoning the link it must indicate to
libata that recovery ends by returning -ENODEV from
-&gt;lldd_I_T_nexus_reset().

Acked-by: Lukasz Dorau &lt;lukasz.dorau@intel.com&gt;
Reported-by: David Milburn &lt;dmilburn@redhat.com&gt;
Reported-by: Xun Ni &lt;xun.ni@intel.com&gt;
Tested-by: Xun Ni &lt;xun.ni@intel.com&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.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 ddfadd7736b677de2d4ca2cd5b4b655368c85a7a upstream.

Remove an erroneous BUG_ON() in the case of a hard reset timeout.  The
reset timeout handler puts the port into the "awaiting link-up" state.
The timeout causes the device to be disconnected and we need to be in
the awaiting link-up state to re-connect the port.  The BUG_ON() made
the incorrect assumption that resets never timeout and we always
complete the reset in the "resetting" state.

Testing this patch also uncovered that libata continues to attempt to
reset the port long after the driver has torn down the context.  Once
the driver has committed to abandoning the link it must indicate to
libata that recovery ends by returning -ENODEV from
-&gt;lldd_I_T_nexus_reset().

Acked-by: Lukasz Dorau &lt;lukasz.dorau@intel.com&gt;
Reported-by: David Milburn &lt;dmilburn@redhat.com&gt;
Reported-by: Xun Ni &lt;xun.ni@intel.com&gt;
Tested-by: Xun Ni &lt;xun.ni@intel.com&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.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: bfa: Chinook quad port 16G FC HBA claim issue</title>
<updated>2014-02-06T19:05:48+00:00</updated>
<author>
<name>Vijaya Mohan Guvva</name>
<email>vmohan@brocade.com</email>
</author>
<published>2013-12-04T13:43:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bce4e9bf144e6394b61d1b275a720d76e2bc4b1a'/>
<id>bce4e9bf144e6394b61d1b275a720d76e2bc4b1a</id>
<content type='text'>
commit dcaf9aed995c2b2a49fb86bbbcfa2f92c797ab5d upstream.

Bfa driver crash is observed while pushing the firmware on to chinook
quad port card due to uninitialized bfi_image_ct2 access which gets
initialized only for CT2 ASIC based cards after request_firmware().
For quard port chinook (CT2 ASIC based), bfi_image_ct2 is not getting
initialized as there is no check for chinook PCI device ID before
request_firmware and instead bfi_image_cb is initialized as it is the
default case for card type check.

This patch includes changes to read the right firmware for quad port chinook.

Signed-off-by: Vijaya Mohan Guvva &lt;vmohan@brocade.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 dcaf9aed995c2b2a49fb86bbbcfa2f92c797ab5d upstream.

Bfa driver crash is observed while pushing the firmware on to chinook
quad port card due to uninitialized bfi_image_ct2 access which gets
initialized only for CT2 ASIC based cards after request_firmware().
For quard port chinook (CT2 ASIC based), bfi_image_ct2 is not getting
initialized as there is no check for chinook PCI device ID before
request_firmware and instead bfi_image_cb is initialized as it is the
default case for card type check.

This patch includes changes to read the right firmware for quad port chinook.

Signed-off-by: Vijaya Mohan Guvva &lt;vmohan@brocade.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: hpsa: return 0 from driver probe function on success, not 1</title>
<updated>2013-12-12T06:34:10+00:00</updated>
<author>
<name>Stephen M. Cameron</name>
<email>scameron@beardog.cce.hp.com</email>
</author>
<published>2013-11-01T16:02:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3d4866261167bb89408a0bfcd374537cb971aeb8'/>
<id>3d4866261167bb89408a0bfcd374537cb971aeb8</id>
<content type='text'>
commit 88bf6d62db4393fa03a58bada9d746312d5b496f upstream.

A return value of 1 is interpreted as an error.  See pci_driver.
in local_pci_probe().  If you're wondering how this ever could
have worked, it's because it used to be the case that only return
values less than zero were interpreted as failure.  But even in
the current kernel if the driver registers its various entry
points with the kernel, and then returns a value which is
interpreted as failure, those registrations aren't undone, so
the driver still mostly works.  However, the driver's remove
function wouldn't be called on rmmod, and pci power management
functions wouldn't work.  In the case of Smart Array, since it
has a battery backed cache (or else no cache) even if the driver
is not shut down properly as long as there is no outstanding
i/o, nothing too bad happens, which is why it took so long to
notice.

Requesting backport to stable because the change to pci-driver.c
which requires driver probe functions to return 0 occurred between
2.6.35 and 2.6.36 (the pci power management breakage) and again
between 3.7 and 3.8 (pci_dev-&gt;driver getting set to NULL in
local_pci_probe() preventing driver remove function from being
called on rmmod.)

Signed-off-by: Stephen M. Cameron &lt;scameron@beardog.cce.hp.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 88bf6d62db4393fa03a58bada9d746312d5b496f upstream.

A return value of 1 is interpreted as an error.  See pci_driver.
in local_pci_probe().  If you're wondering how this ever could
have worked, it's because it used to be the case that only return
values less than zero were interpreted as failure.  But even in
the current kernel if the driver registers its various entry
points with the kernel, and then returns a value which is
interpreted as failure, those registrations aren't undone, so
the driver still mostly works.  However, the driver's remove
function wouldn't be called on rmmod, and pci power management
functions wouldn't work.  In the case of Smart Array, since it
has a battery backed cache (or else no cache) even if the driver
is not shut down properly as long as there is no outstanding
i/o, nothing too bad happens, which is why it took so long to
notice.

Requesting backport to stable because the change to pci-driver.c
which requires driver probe functions to return 0 occurred between
2.6.35 and 2.6.36 (the pci power management breakage) and again
between 3.7 and 3.8 (pci_dev-&gt;driver getting set to NULL in
local_pci_probe() preventing driver remove function from being
called on rmmod.)

Signed-off-by: Stephen M. Cameron &lt;scameron@beardog.cce.hp.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: hpsa: do not discard scsi status on aborted commands</title>
<updated>2013-12-12T06:34:10+00:00</updated>
<author>
<name>Stephen M. Cameron</name>
<email>scameron@beardog.cce.hp.com</email>
</author>
<published>2013-09-23T18:33:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=877227541646b8ee9f99069457014f828942fedb'/>
<id>877227541646b8ee9f99069457014f828942fedb</id>
<content type='text'>
commit 2e311fbabdc23b7eaec77313dc3b9a151a5407b5 upstream.

We inadvertantly discarded the scsi status for aborted commands.
For some commands (e.g. reads from tape drives) these can't be retried,
and if we discarded the scsi status, the scsi mid layer couldn't notice
anything was wrong and the error was not reported.

Signed-off-by: Stephen M. Cameron &lt;scameron@beardog.cce.hp.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 2e311fbabdc23b7eaec77313dc3b9a151a5407b5 upstream.

We inadvertantly discarded the scsi status for aborted commands.
For some commands (e.g. reads from tape drives) these can't be retried,
and if we discarded the scsi status, the scsi mid layer couldn't notice
anything was wrong and the error was not reported.

Signed-off-by: Stephen M. Cameron &lt;scameron@beardog.cce.hp.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: libsas: fix usage of ata_tf_to_fis</title>
<updated>2013-12-12T06:34:10+00:00</updated>
<author>
<name>Dan Williams</name>
<email>dan.j.williams@intel.com</email>
</author>
<published>2013-10-23T01:35:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=41bb75da07743ef39d7c1be4d8d53f83270f6762'/>
<id>41bb75da07743ef39d7c1be4d8d53f83270f6762</id>
<content type='text'>
commit ae5fbae0ccd982dfca0ce363036ed92f5b13f150 upstream.

Since commit 110dd8f19df5 "[SCSI] libsas: fix scr_read/write users and
update the libata documentation" we have been passing pmp=1 and is_cmd=0
to ata_tf_to_fis().  Praveen reports that eSATA attached drives do not
discover correctly.  His investigation found that the BIOS was passing
pmp=0 while Linux was passing pmp=1 and failing to discover the drives.
Update libsas to follow the libata example of pulling the pmp setting
from the ata_link and correct is_cmd to be 1 since all tf's submitted
through -&gt;qc_issue are commands.  Presumably libsas lldds do not care
about is_cmd as they have sideband mechanisms to perform link
management.

http://marc.info/?l=linux-scsi&amp;m=138179681726990

[jejb: checkpatch fix]
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Reported-by: Praveen Murali &lt;pmurali@logicube.com&gt;
Tested-by: Praveen Murali &lt;pmurali@logicube.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 ae5fbae0ccd982dfca0ce363036ed92f5b13f150 upstream.

Since commit 110dd8f19df5 "[SCSI] libsas: fix scr_read/write users and
update the libata documentation" we have been passing pmp=1 and is_cmd=0
to ata_tf_to_fis().  Praveen reports that eSATA attached drives do not
discover correctly.  His investigation found that the BIOS was passing
pmp=0 while Linux was passing pmp=1 and failing to discover the drives.
Update libsas to follow the libata example of pulling the pmp setting
from the ata_link and correct is_cmd to be 1 since all tf's submitted
through -&gt;qc_issue are commands.  Presumably libsas lldds do not care
about is_cmd as they have sideband mechanisms to perform link
management.

http://marc.info/?l=linux-scsi&amp;m=138179681726990

[jejb: checkpatch fix]
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Reported-by: Praveen Murali &lt;pmurali@logicube.com&gt;
Tested-by: Praveen Murali &lt;pmurali@logicube.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>aacraid: prevent invalid pointer dereference</title>
<updated>2013-11-29T18:50:30+00:00</updated>
<author>
<name>Mahesh Rajashekhara</name>
<email>Mahesh.Rajashekhara@pmcs.com</email>
</author>
<published>2013-10-31T08:31:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3a7ed06c1e3a1ec493d97dc5a708bae17dd9e7b0'/>
<id>3a7ed06c1e3a1ec493d97dc5a708bae17dd9e7b0</id>
<content type='text'>
commit b4789b8e6be3151a955ade74872822f30e8cd914 upstream.

It appears that driver runs into a problem here if fibsize is too small
because we allocate user_srbcmd with fibsize size only but later we
access it until user_srbcmd-&gt;sg.count to copy it over to srbcmd.

It is not correct to test (fibsize &lt; sizeof(*user_srbcmd)) because this
structure already includes one sg element and this is not needed for
commands without data.  So, we would recommend to add the following
(instead of test for fibsize == 0).

Signed-off-by: Mahesh Rajashekhara &lt;Mahesh.Rajashekhara@pmcs.com&gt;
Reported-by: Nico Golde &lt;nico@ngolde.de&gt;
Reported-by: Fabian Yamaguchi &lt;fabs@goesec.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Kees Cook &lt;keescook@chromium.org&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 b4789b8e6be3151a955ade74872822f30e8cd914 upstream.

It appears that driver runs into a problem here if fibsize is too small
because we allocate user_srbcmd with fibsize size only but later we
access it until user_srbcmd-&gt;sg.count to copy it over to srbcmd.

It is not correct to test (fibsize &lt; sizeof(*user_srbcmd)) because this
structure already includes one sg element and this is not needed for
commands without data.  So, we would recommend to add the following
(instead of test for fibsize == 0).

Signed-off-by: Mahesh Rajashekhara &lt;Mahesh.Rajashekhara@pmcs.com&gt;
Reported-by: Nico Golde &lt;nico@ngolde.de&gt;
Reported-by: Fabian Yamaguchi &lt;fabs@goesec.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Kees Cook &lt;keescook@chromium.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
