Resumes the scsi device before accessing it. Change-Id: I2929af60f2a92c89704a582fcdb285d35b429fde Signed-off-by: Asutosh Das <asutoshd@xxxxxxxxxxxxxx> Signed-off-by: Can Guo <cang@xxxxxxxxxxxxxx> Signed-off-by: Bao D. Nguyen <nguyenb@xxxxxxxxxxxxxx> --- block/bsg.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/block/bsg.c b/block/bsg.c index d7bae94..f4c197f 100644 --- a/block/bsg.c +++ b/block/bsg.c @@ -306,12 +306,16 @@ static struct bsg_device *bsg_get_device(struct inode *inode, struct file *file) static int bsg_open(struct inode *inode, struct file *file) { struct bsg_device *bd; + struct scsi_device *sd; bd = bsg_get_device(inode, file); if (IS_ERR(bd)) return PTR_ERR(bd); + sd = (struct scsi_device *) bd->queue->queuedata; + if (scsi_autopm_get_device(sd)) + return -EIO; file->private_data = bd; return 0; } @@ -319,8 +323,12 @@ static int bsg_open(struct inode *inode, struct file *file) static int bsg_release(struct inode *inode, struct file *file) { struct bsg_device *bd = file->private_data; + struct scsi_device *sd; file->private_data = NULL; + sd = (struct scsi_device *) bd->queue->queuedata; + scsi_autopm_put_device(sd); + return bsg_put_device(bd); } -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.