提交 26a35f37 编写于 作者: S Stefan Weinhuber 提交者: Martin Schwidefsky

s390/dasd: validate request size before building CCW/TCW request

An I/O request that does not read or write full blocks cannot be
translated into a correct CCW or TCW program and should be rejected
right away. In particular the code that creates TCW requests will not
notice this problem and create broken TCWs that will be rejected by
the hardware.
Signed-off-by: NStefan Weinhuber <wein@de.ibm.com>
Reference-ID: RQM1956
上级 aa7e04b3
...@@ -3224,6 +3224,8 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev, ...@@ -3224,6 +3224,8 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev,
fcx_multitrack = private->features.feature[40] & 0x20; fcx_multitrack = private->features.feature[40] & 0x20;
data_size = blk_rq_bytes(req); data_size = blk_rq_bytes(req);
if (data_size % blksize)
return ERR_PTR(-EINVAL);
/* tpm write request add CBC data on each track boundary */ /* tpm write request add CBC data on each track boundary */
if (rq_data_dir(req) == WRITE) if (rq_data_dir(req) == WRITE)
data_size += (last_trk - first_trk) * 4; data_size += (last_trk - first_trk) * 4;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册