diff mbox

[1/1] scsi: scsi_transport_fc: Fix a bug in the error handling function

Message ID 1452213645-18889-1-git-send-email-kys@microsoft.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

KY Srinivasan Jan. 8, 2016, 12:40 a.m. UTC
The macro startget_to_rport() can return NULL; handle that case
properly.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Cc: <stable@vger.kernel.org>
---
 drivers/scsi/scsi_transport_fc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

James Bottomley Jan. 7, 2016, 11:48 p.m. UTC | #1
On Thu, 2016-01-07 at 16:40 -0800, K. Y. Srinivasan wrote:
> The macro startget_to_rport() can return NULL; handle that case
> properly.

OK, can we unwind why you think you could possibly need this?  It would
mean that fc_timed_out was called for a non-FC device, which was
thought to be an impossibility when the fc transport class was
designed.

James

> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> Cc: <stable@vger.kernel.org>
> ---
>  drivers/scsi/scsi_transport_fc.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/scsi/scsi_transport_fc.c
> b/drivers/scsi/scsi_transport_fc.c
> index 24eaaf6..42a908f 100644
> --- a/drivers/scsi/scsi_transport_fc.c
> +++ b/drivers/scsi/scsi_transport_fc.c
> @@ -2081,7 +2081,7 @@ fc_timed_out(struct scsi_cmnd *scmd)
>  {
>  	struct fc_rport *rport = starget_to_rport(scsi_target(scmd
> ->device));
>  
> -	if (rport->port_state == FC_PORTSTATE_BLOCKED)
> +	if ((rport == NULL) || (rport->port_state ==
> FC_PORTSTATE_BLOCKED))
>  		return BLK_EH_RESET_TIMER;
>  
>  	return BLK_EH_NOT_HANDLED;

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
KY Srinivasan Jan. 8, 2016, 6:58 p.m. UTC | #2
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmFtZXMgQm90dG9tbGV5
IFttYWlsdG86SmFtZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbV0NCj4gU2VudDog
VGh1cnNkYXksIEphbnVhcnkgNywgMjAxNiAzOjQ5IFBNDQo+IFRvOiBLWSBTcmluaXZhc2FuIDxr
eXNAbWljcm9zb2Z0LmNvbT47IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBsaW51eC0NCj4g
a2VybmVsQHZnZXIua2VybmVsLm9yZzsgZGV2ZWxAbGludXhkcml2ZXJwcm9qZWN0Lm9yZzsgb2hl
cmluZ0BzdXNlLmNvbTsNCj4gamJvdHRvbWxleUBwYXJhbGxlbHMuY29tOyBoY2hAaW5mcmFkZWFk
Lm9yZzsgbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmc7DQo+IGFwd0BjYW5vbmljYWwuY29tOyB2
a3V6bmV0c0ByZWRoYXQuY29tOyBqYXNvd2FuZ0ByZWRoYXQuY29tOw0KPiBtYXJ0aW4ucGV0ZXJz
ZW5Ab3JhY2xlLmNvbTsgaGFyZUBzdXNlLmRlDQo+IENjOiBzdGFibGVAdmdlci5rZXJuZWwub3Jn
DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8xXSBzY3NpOiBzY3NpX3RyYW5zcG9ydF9mYzogRml4
IGEgYnVnIGluIHRoZSBlcnJvcg0KPiBoYW5kbGluZyBmdW5jdGlvbg0KPiANCj4gT24gVGh1LCAy
MDE2LTAxLTA3IGF0IDE2OjQwIC0wODAwLCBLLiBZLiBTcmluaXZhc2FuIHdyb3RlOg0KPiA+IFRo
ZSBtYWNybyBzdGFydGdldF90b19ycG9ydCgpIGNhbiByZXR1cm4gTlVMTDsgaGFuZGxlIHRoYXQg
Y2FzZQ0KPiA+IHByb3Blcmx5Lg0KPiANCj4gT0ssIGNhbiB3ZSB1bndpbmQgd2h5IHlvdSB0aGlu
ayB5b3UgY291bGQgcG9zc2libHkgbmVlZCB0aGlzPyAgSXQgd291bGQNCj4gbWVhbiB0aGF0IGZj
X3RpbWVkX291dCB3YXMgY2FsbGVkIGZvciBhIG5vbi1GQyBkZXZpY2UsIHdoaWNoIHdhcw0KPiB0
aG91Z2h0IHRvIGJlIGFuIGltcG9zc2liaWxpdHkgd2hlbiB0aGUgZmMgdHJhbnNwb3J0IGNsYXNz
IHdhcw0KPiBkZXNpZ25lZC4NCg0KQXMgeW91IGtub3csIG9uIEh5cGVyLVYsIEZDIGRldmljZXMg
YXJlIGhhbmRsZWQgZXhhY3RseSBsaWtlIG5vcm1hbCBzY3NpDQpkZXZpY2VzIGFuZCB0aGUgb25s
eSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYXQgaXMgcHJvdmlkZWQgZm9yIEZDIGRldmljZXMN
CmlzIHRoZSBXV04gZm9yIHBvcnQgYW5kIG5vZGUuIFRpbGwgcmVjZW50bHksIEkgd2FzIG5vdCBw
dWJsaXNoaW5nIHRoZSBXV04gaW4NCnRoZSBndWVzdCBhbmQgc28gSSB3YXMgbm90IGV2ZW4gdXNp
bmcgdGhlIEZDIHRyYW5zcG9ydC4gUmVjZW50bHksIEkgaW1wbGVtZW50ZWQNCnN1cHBvcnQgZm9y
IHB1Ymxpc2hpbmcgdGhlIFdXTiBpbiB0aGUgZ3Vlc3QgYW5kIGZvciB0aGF0IEkgYW0gdXNpbmcg
dGhlIEZDIHRyYW5zcG9ydA0KZm9yIEZDIGhvc3RzLiBXaGVuIGFuIEZDIExVTiBpcyBkeW5hbWlj
YWxseSByZW1vdmVkLCBzb21ldGltZXMgSSBzZWUgdGhlIHRpbWVvdXQNCm9jY3VycmluZyBhbmQg
c2luY2UgdGhlcmUgaXMgbm8gcnBvcnQgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGRldmljZXMgSSBh
bSBoaXR0aW5nIHRoZSBpc3N1ZQ0KdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nLiBJIGNvdWxkIGhh
dmUgYWRkcmVzc2VkIHRoaXMgcHJvYmxlbSBieSBlc3RhYmxpc2hpbmcgYSBzdG9ydnNjIHNwZWNp
ZmljDQp0aW1lIG91dCBmdW5jdGlvbiBldmVuIGZvciBGQyBkZXZpY2VzIC0gdGhlIHNhbWUgdGlt
ZW91dCBmdW5jdGlvbiB0aGF0IEkgY3VycmVudGx5IHVzZSBmb3Igc2NzaQ0KZGV2aWNlcyAtICBz
dG9ydnNjX2VoX3RpbWVkX291dCgpLiBJIGNob3NlIHRvIGluc3RlYWQgZml4IHRoZSBmY190aW1l
ZF9vdXQoKSBmdW5jdGlvbiBzaW5jZQ0KdGhlIGNvZGUgd2FzIG5vdCBoYW5kbGluZyBhIHBvc3Np
YmxlIGNvbmRpdGlvbi4NCg0KUmVnYXJkcywNCg0KSy4gWQ0KPiANCj4gSmFtZXMNCj4gDQo+ID4g
U2lnbmVkLW9mZi1ieTogSy4gWS4gU3Jpbml2YXNhbiA8a3lzQG1pY3Jvc29mdC5jb20+DQo+ID4g
Q2M6IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL3Njc2kv
c2NzaV90cmFuc3BvcnRfZmMuYyB8ICAgIDIgKy0NCj4gPiAgMSBmaWxlcyBjaGFuZ2VkLCAxIGlu
c2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy
cy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMNCj4gPiBiL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5z
cG9ydF9mYy5jDQo+ID4gaW5kZXggMjRlYWFmNi4uNDJhOTA4ZiAxMDA2NDQNCj4gPiAtLS0gYS9k
cml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvc2NzaS9z
Y3NpX3RyYW5zcG9ydF9mYy5jDQo+ID4gQEAgLTIwODEsNyArMjA4MSw3IEBAIGZjX3RpbWVkX291
dChzdHJ1Y3Qgc2NzaV9jbW5kICpzY21kKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgZmNfcnBvcnQg
KnJwb3J0ID0gc3RhcmdldF90b19ycG9ydChzY3NpX3RhcmdldChzY21kDQo+ID4gLT5kZXZpY2Up
KTsNCj4gPg0KPiA+IC0JaWYgKHJwb3J0LT5wb3J0X3N0YXRlID09IEZDX1BPUlRTVEFURV9CTE9D
S0VEKQ0KPiA+ICsJaWYgKChycG9ydCA9PSBOVUxMKSB8fCAocnBvcnQtPnBvcnRfc3RhdGUgPT0N
Cj4gPiBGQ19QT1JUU1RBVEVfQkxPQ0tFRCkpDQo+ID4gIAkJcmV0dXJuIEJMS19FSF9SRVNFVF9U
SU1FUjsNCj4gPg0KPiA+ICAJcmV0dXJuIEJMS19FSF9OT1RfSEFORExFRDsNCg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index 24eaaf6..42a908f 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -2081,7 +2081,7 @@  fc_timed_out(struct scsi_cmnd *scmd)
 {
 	struct fc_rport *rport = starget_to_rport(scsi_target(scmd->device));
 
-	if (rport->port_state == FC_PORTSTATE_BLOCKED)
+	if ((rport == NULL) || (rport->port_state == FC_PORTSTATE_BLOCKED))
 		return BLK_EH_RESET_TIMER;
 
 	return BLK_EH_NOT_HANDLED;