block, drbd: fix drbd_req_new() initialization
authorDavid Rientjes <rientjes@google.com>
Tue, 24 Mar 2015 23:22:32 +0000 (16:22 -0700)
committerJens Axboe <axboe@fb.com>
Wed, 25 Mar 2015 02:00:16 +0000 (20:00 -0600)
mempool_alloc() does not support __GFP_ZERO since elements may come from
memory that has already been released by mempool_free().

Remove __GFP_ZERO from mempool_alloc() in drbd_req_new() and properly
initialize it to 0.

Cc: Lars Ellenberg <drbd-dev@lists.linbit.com>
Cc: Jens Axboe <axboe@fb.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/drbd/drbd_req.c

index 34f2f0ba409bf1aafd4b0137a57b7a308aaa60e1..3907202fb9d9d27aaae4679cb16077b6e5d392e6 100644 (file)
@@ -52,9 +52,10 @@ static struct drbd_request *drbd_req_new(struct drbd_device *device,
 {
        struct drbd_request *req;
 
-       req = mempool_alloc(drbd_request_mempool, GFP_NOIO | __GFP_ZERO);
+       req = mempool_alloc(drbd_request_mempool, GFP_NOIO);
        if (!req)
                return NULL;
+       memset(req, 0, sizeof(*req));
 
        drbd_req_make_private_bio(req, bio_src);
        req->rq_state    = bio_data_dir(bio_src) == WRITE ? RQ_WRITE : 0;