Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54ed4ed8 authored by Lars Ellenberg's avatar Lars Ellenberg Committed by Jens Axboe
Browse files

drbd: fix NULL pointer deref in blk_add_request_payload



Discards don't have any payload.
But the scsi layer still expects a bio_vec it can use internally,
see sd_setup_discard_cmnd() and blk_add_request_payload().

Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 0ffbce80
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1337,8 +1337,11 @@ int drbd_submit_peer_request(struct drbd_device *device,
		return 0;
	}

	/* Discards don't have any payload.
	 * But the scsi layer still expects a bio_vec it can use internally,
	 * see sd_setup_discard_cmnd() and blk_add_request_payload(). */
	if (peer_req->flags & EE_IS_TRIM)
		nr_pages = 0; /* discards don't have any payload. */
		nr_pages = 1;

	/* In most cases, we will only need one bio.  But in case the lower
	 * level restrictions happen to be different at this offset on this