tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
[linux-2.6-microblaze.git] / block / bsg.c
index d7bae94..bd10922 100644 (file)
@@ -157,8 +157,10 @@ static int bsg_sg_io(struct request_queue *q, fmode_t mode, void __user *uarg)
                return PTR_ERR(rq);
 
        ret = q->bsg_dev.ops->fill_hdr(rq, &hdr, mode);
-       if (ret)
+       if (ret) {
+               blk_put_request(rq);
                return ret;
+       }
 
        rq->timeout = msecs_to_jiffies(hdr.timeout);
        if (!rq->timeout)
@@ -181,7 +183,7 @@ static int bsg_sg_io(struct request_queue *q, fmode_t mode, void __user *uarg)
 
        bio = rq->bio;
 
-       blk_execute_rq(q, NULL, rq, !(hdr.flags & BSG_FLAG_Q_AT_TAIL));
+       blk_execute_rq(NULL, rq, !(hdr.flags & BSG_FLAG_Q_AT_TAIL));
        ret = rq->q->bsg_dev.ops->complete_rq(rq, &hdr);
        blk_rq_unmap_user(bio);