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: Stefan Weinhuber <wein@de.ibm.com>
Reference-ID: RQM1956
This commit is contained in:
Stefan Weinhuber 2013-11-19 14:15:57 +01:00 коммит произвёл Martin Schwidefsky
Родитель aa7e04b380
Коммит 26a35f373f
1 изменённых файлов: 2 добавлений и 0 удалений

Просмотреть файл

@ -3224,6 +3224,8 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev,
fcx_multitrack = private->features.feature[40] & 0x20;
data_size = blk_rq_bytes(req);
if (data_size % blksize)
return ERR_PTR(-EINVAL);
/* tpm write request add CBC data on each track boundary */
if (rq_data_dir(req) == WRITE)
data_size += (last_trk - first_trk) * 4;