aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Van Assche <bart.vanassche@sandisk.com>2016-11-21 16:58:18 -0500
committerDoug Ledford <dledford@redhat.com>2016-12-14 13:31:47 -0500
commit4fa354c9dbfef9226a690d8ee319b046f3067a6a (patch)
treec03b9e1df1752e7da6c988e5fa99b77e1cb3c5df
parent290081b45342ef902ed756f929fa9e4feb9f7dab (diff)
IB/srp: Make writing the add_target sysfs attr interruptible
Avoid that shutdown of srp_daemon is delayed if add_target_mutex is held by another process. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/infiniband/ulp/srp/ib_srp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index bb9d73daadfa..8ddc07123193 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -3299,7 +3299,9 @@ static ssize_t srp_create_target(struct device *dev,
3299 */ 3299 */
3300 scsi_host_get(target->scsi_host); 3300 scsi_host_get(target->scsi_host);
3301 3301
3302 mutex_lock(&host->add_target_mutex); 3302 ret = mutex_lock_interruptible(&host->add_target_mutex);
3303 if (ret < 0)
3304 goto put;
3303 3305
3304 ret = srp_parse_options(buf, target); 3306 ret = srp_parse_options(buf, target);
3305 if (ret) 3307 if (ret)
@@ -3455,6 +3457,7 @@ connected:
3455out: 3457out:
3456 mutex_unlock(&host->add_target_mutex); 3458 mutex_unlock(&host->add_target_mutex);
3457 3459
3460put:
3458 scsi_host_put(target->scsi_host); 3461 scsi_host_put(target->scsi_host);
3459 if (ret < 0) 3462 if (ret < 0)
3460 scsi_host_put(target->scsi_host); 3463 scsi_host_put(target->scsi_host);