Make sure that bsg_queue_rq() calls put_device() if an error is
encountered after get_device() was successful.
Fixes: cd2f076f1d7a ("bsg: convert to use blk-mq")
Signed-off-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
        struct request *req = bd->rq;
        struct bsg_set *bset =
                container_of(q->tag_set, struct bsg_set, tag_set);
+       int sts = BLK_STS_IOERR;
        int ret;
 
        blk_mq_start_request(req);
                return BLK_STS_IOERR;
 
        if (!bsg_prepare_job(dev, req))
-               return BLK_STS_IOERR;
+               goto out;
 
        ret = bset->job_fn(blk_mq_rq_to_pdu(req));
-       if (ret)
-               return BLK_STS_IOERR;
+       if (!ret)
+               sts = BLK_STS_OK;
 
+out:
        put_device(dev);
-       return BLK_STS_OK;
+       return sts;
 }
 
 /* called right after the request is allocated for the request_queue */